如何为俚语和表情符号构建正则表达式(正则表达式)

我需要构建一个正则表达式来匹配俚语(即lol,lmao,imo等等)和表情符号(即:),:P ,;)等…)。

我按照http://www.coderanch.com/t/497238/java/java/Regular-Expression-Detecting-Emoticons上的示例进行操作。 但是,这种方法/方法对我来说是失败的。

例如,假设我需要匹配俚语“od”。 我创建一个模式如下。 Pattern pattern = Pattern.compile(Pattern.quote(“od”));

假设我需要在下面的测试句中匹配俚语“od”,“有些方法很糟糕。” 根据经验,字符串中的“方法”一词有一个匹配,这不是我想要的。

我确实阅读了一些关于java和regex的javadoc和一些教程,但我仍然无法弄清楚这一点。

顺便说一句,我使用的是Java 6(虽然我看过并参考了java 5 api doc)。

如果正则表达式不是最好的方法,我也会接受其他解决方案。 提前感谢任何帮助/指针。 以下代码获得3个匹配,并基于上面的链接。

String regex = "od"; Pattern pattern = Pattern.compile(Pattern.quote(regex)); String str = "some methods are bad od od more text"; Matcher matcher = pattern.matcher(str); while(matcher.find()) { System.out.println(matcher.group()); } 

以下代码返回没有匹配项,并且基于到目前为止的响应。

 String regex = "\bod\b"; Pattern pattern = Pattern.compile(regex); //Pattern pattern = Pattern.compile(Pattern.quote(regex)); //this fails String str = "some methods are bad od od more text"; Matcher matcher = pattern.matcher(str); while(matcher.find()) { System.out.println(matcher.group()); } 

在下面两个有用的回复之后,我会在这里发布正确/想要的代码片段。

 String regex = "(\\bod\\b)|(\\blmao\\b)"; Pattern pattern = Pattern.compile(regex); String str = "some methods are bad od od more text lmao more text"; Matcher matcher = pattern.matcher(str); while(matcher.find()) { System.out.println(matcher.group()); } 

这段代码是正确的或根据需要,因为根据经验,它给了我3个匹配(2 od和1 lmao)。 对不起,我希望我使用java(和一般的正则表达式)使用正则表达式更强。 谢谢你的帮助。

[:] – [DP()]

处理“:”或“:”加“ – ”和“D”或“P”或“)”或“(”的组合
例如。 :P :-(; D等…

只需添加更多组合……

玩得开心..

您可以使用单词边界( \b )来匹配您想要的俚语。

因此,例如,模式"\bod\b"将匹配“od”,但不匹配“method”。

你需要使用正则表达式吗? 我会做

 String str = "some methods are bad od od more text lmao more text"; String[] words = str.Split(" "); for (String s : words) { if (s.Equals("od") || s.Equals("lamo")) System.out.println(s); }