【发布时间】:2022-07-31 17:55:34
【问题描述】:
我写了这个正则表达式。
(?i)(#?covid\s|#?covid\W|#?covid\d+)
但它似乎与大写单词 (COVID) 不匹配。我该如何改进它?
【问题讨论】:
-
它不会匹配字符串
"COVID"(或"covid")!它必须有一个尾随空格 (\s) 或一个非单词字符 (\W) 或至少一位数字 (\d+) -
应该匹配它:regex101.com/r/HegPg1/1;您可以通过分解它来改进您的正则表达式:
(?i)#?covid(\s|\W|\d+) -
啊,请注意,您的正则表达式会强制匹配 COVID 之后的附加字符(空格、非单词字符或某些数字),因此 COVID 在行尾(或单独匹配) ) 将不匹配
-
由于某些原因,正则表达式显示正确的结果。但是我的java代码没有考虑到COVID。模式 pattern = Pattern.compile("(?i)#?covid(\\s|\\W|\\d+)");匹配器 matcher = pattern.matcher(tweet.getText()); boolean matchFound = matcher.find();
-
注意:
find()用于查找;matches()用于匹配 - 如果整个输入字符串与正则表达式匹配,稍后仅返回true- 请包含有问题的代码,而不是评论;最好还包括输入(来自tweet.getText()的值