我目前正在学习如何通过匹配简单的Hashtag模式来用Java编写正则表达式。这些哈希标签符合以下条件:
基于此,我认为正确的正则表达式是:
PATTERN = "(?<![a-zA-Z0-9_])#(?=.*[a-zA-Z])[a-zA-Z0-9_]+"在这里,我使用了一个前瞻性(?=.*[a-zA-Z])来确保条件2保持,并使用一个查找后面的(?<![a-zA-Z0-9_])来确保条件4保持。我对以+结尾不太确定。
这在简单的测试用例上有效,但对于复杂的测试用例(如:
String text = "####THIS_IS_A_HASHTAG; ;#This_1_2...#12_and_this but not #123 or #this# #or#that";哪里不匹配#THIS_IS_A_HASHTAG、#This_1_2和12_and_this
有人能解释我做错了什么吗?
发布于 2015-10-04 04:15:37
这个怎么样?
String text = "####THIS_IS_A_HASHTAG;;;#This_1_2...#12_and_this ";
String regex = "#[A-Za-z0-9_]+";
Matcher m = Pattern.compile(regex).matcher(text);
while (m.find()) {
System.out.println(m.group());
}看起来它符合你所说的标准:
#THIS_IS_A_HASHTAG
#This_1_2
#12_and_thishttps://stackoverflow.com/questions/32929907
复制相似问题