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

时间:2010-12-13 03:52:39

标签: java regex

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

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

例如,假设我需要匹配俚语“od”。我创建一个模式如下。 模式模式= 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(和一般的正则表达式)使用正则表达式更强。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

[:] - [DP()]

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

只需添加更多组合......

玩得开心..

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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);
}