使用模式检查整个字符串是否与Java正则表达式匹配

时间:2016-10-13 07:32:28

标签: java

我的逻辑是查找文件是否包含特定版本文本。例如,文件可能包含

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 请建议如何更改我的正则表达式以解决问题

0 个答案:

没有答案