我的逻辑是查找文件是否包含特定版本文本。例如,文件可能包含
act 1.9
ACT 1.4
MA 1.2
ma 1.9
...
如果我的文件包含上述任何文本,我想返回true。意味着在不敏感的情况下搜索文本,版本可以是0.0到9.0之间的任何内容
所以我写了正则表达式如下:
final Map<String, Float> outdatedPatterns = new HashMap<String, Float>();
outdatedPatterns.put("act\\s*_*([0-9.]+)", Float.parseFloat("5.4"));
outdatedPatterns.put("ma\\s*_*([0-9.]+)", Float.parseFloat("5.3"));
for (Map.Entry entry : outdatedPatterns.entrySet()) {
String regex = (String) entry.getKey();
Float minSupportedVersion = (Float) entry.getValue();
Pattern outdatedPattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher outdatedPatternMatcher = outdatedPattern.matcher(content);
while (outdatedPatternMatcher.find()) {
/* stuff */
这个逻辑的问题是,逻辑认为以下文本也是真的
架构1.4
反应3.0
但我想要的只是搜索整个字符串act和ma 请建议如何更改我的正则表达式以解决问题