我需要构建一个正则表达式来匹配俚语(即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(和一般的正则表达式)使用正则表达式更强。谢谢你的帮助。
答案 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);
}