我需要在 Android 应用程序中匹配 Twitter-Hashtags,但我的代码似乎没有执行预期的操作。 我想到的是:
ArrayList<String> tags = new ArrayList<String>(0);
Pattern p = Pattern.compile("\b#[a-z]+", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(tweet); // tweet contains the tweet as a String
while(m.find()){
tags.add(m.group());
}
变量 tweet 包含包含主题标签的常规推文 - 但 find() 不会触发。所以我猜我的正则表达式是错误的。
最佳答案
您的正则表达式因 \b
字边界 anchor 而失败。此 anchor 仅匹配非单词字符和单词字符(字母数字字符)。因此,将它直接放在 #
前面会导致正则表达式失败,除非在 #
之前有字母数字字符 !您的正则表达式会匹配 foobarfoo#hashtag blahblahblah
中的主题标签,但不会匹配 foobarfoo #hashtag blahblahblah
中的主题标签。
改用#\w+
,记住,在字符串中,你需要双反斜杠:
Pattern p = Pattern.compile("#\\w+");
关于java - 这个正则表达式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844426/