我正在尝试编写一个正则表达式,以在Java程序中识别出现在输入中的模式,其次数未知。我的简单示例是:
String patString = "(?:.*(h.t).*)*";
然后我尝试通过循环遍历matcher.group(i)来访问来自像"the hut is hot"这样的行的匹配项。它只会记住最后一次匹配(在本例中为"hot"),因为只有一个捕获组--我猜matcher.group(1)的内容被重用时会被覆盖。但我想要的是某种包含"hut"和"hot"的数组。
是否有更好的方法?值得一提的是,我真正想做的是在信号词后捕捉所有(可能是多个单词的)专有名词,其中可能会有其他单词和标点符号。因此,如果"saw"是信号词,我们有"I saw Bob with John Smith, and his wife Margaret",我想要{"Bob","John Smith","Margaret"}。
h.t
作为模式字符串怎么样? - vbence(h.t)
(用括号将其变成捕获组),那么我只会得到第一个匹配项,而不是最后一个。 (这是你的意思吗?) - umbraphilegroup()
或者group(0)
会返回整个匹配。 - vbence