【问题标题】:REGEX matcher any/all groups正则表达式匹配器任何/所有组
【发布时间】:2017-05-28 19:46:42
【问题描述】:
while (matcher.find()) {
    if (matcher.group(matcherGroup) != null) occurrence++;
}
return occurrence;

这是我用来搜索某个组的匹配数的代码。但是没有像matcher.group(matcherGroup1, matcherGroup2)这样的功能,也没有matcher.group(null)来搜索多个组或所有组。

我读过Link 组(将数组分组为一个)或多个组?

谢谢

【问题讨论】:

  • 你的最终目标是什么?你能举个例子吗?

标签: java regex


【解决方案1】:

你能不写你自己的 matcherGroup 实现吗?您提供的链接是 c#。

我编写了一个简单的 Java 实现,它接受一个字符串,然后将它与多个 RegExp 模式进行匹配。然后返回匹配的数量。

或者,请更详细地解释您要做什么。

package com.chocksaway;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

class SingleMatcher {
    private Pattern pattern;
    private java.util.regex.Matcher matcher;
    private boolean found;

    SingleMatcher(String input, String inputPattern) {
        pattern = Pattern.compile(inputPattern);
        matcher = pattern.matcher(input);

        if (matcher.find()) {
            this.found = true;
        }
    }

    boolean getFound() {
        return this.found;
    }
}

class MatcherGroup {
    private int matchedOccurances;

    MatcherGroup(String input, List<String> multipleInputPattern) {
        for (String inputPattern : multipleInputPattern) {
            SingleMatcher eachSingleMatcher = new SingleMatcher(input, inputPattern);
            if (eachSingleMatcher.getFound()) {
                matchedOccurances++;
            }
        }
    }

    int getMatchedOccurances() {
        return this.matchedOccurances;
    }
}

/**
* Author milesd on 28/05/2017.
*/
public class RegExpMatcher {
    public static void main(String[] args) {
        SingleMatcher singleMatcher = new SingleMatcher("123", "\\d\\d\\d");
        System.out.println(singleMatcher.getFound());

        List<String> inputPatternList = new ArrayList<String>();
        inputPatternList.add("\\d\\d\\d");
        inputPatternList.add("John");

        MatcherGroup matcherGroup = new MatcherGroup("John", inputPatternList);
        System.out.println(matcherGroup.getMatchedOccurances());

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多