如何更改以下模式以查找所有可能的匹配项?

时间:2017-01-30 17:55:01

标签: java regex pattern-matching

我这里有一个Java模式

    String patternString = "(#)(.+?)([\\s,#.])";

我基本上想找到以'#'开头的所有单词。在给定的文本字符串中。如果后面跟着一个结束行,则该模式匹配除最后一个之外的所有单词。我使用哈希映射来存储值。

    int x = 0;

    HashMap<Integer, String> values = new HashMap<>();

    while(matcher.find()) {
        values.put(x++, matcher.group(2));
    }

我试过放一个&#39; $&#39;第三个符号与组匹配,但它似乎不起作用。如何调整模式以匹配以&#39;#&#39;开头的所有单词。还包括最后一个字?

1 个答案:

答案 0 :(得分:1)

除非我误解了你的要求,否则它会简单得多。我建议使用以下模式:

(#)([^\s]+)

匹配#后跟尽可能多的非空白字符。您必须更改代码才能使用组1而不是组2,因为我的模式没有3组。

根据您的具体要求,您还可以使用\w代替[^\s]来匹配任何字词(相当于[a-zA-Z0-9 _])。