我正在尝试编写一个正则表达式,以便在Java程序中使用,该程序将识别输入中可能出现未知次数的模式。我愚蠢的小例子是:
String patString = "(?:.*(h.t).*)*";
然后我尝试通过循环matcher.group(i)从像“小屋很热”这样的行中访问匹配。它只会记住最后一个匹配(在这种情况下,“热”)因为只有一个捕获组 - 我猜想matcher.group(1)的内容会被重写,因为捕获组会被重用。但是,我想要的是某种包含 “hut”和“hot”的数组。
有更好的方法吗? FWIW,我真正想做的是在信号词之后拾取所有(可能是多字的)专有名词,其间可能有其他单词和标点符号。因此,如果“看到”是信号,我们“我看到鲍勃与约翰史密斯和他的妻子玛格丽特,”我想要{“鲍勃”,“约翰史密斯”,“玛格丽特”}。
答案 0 :(得分:6)
(类似问题:Regular expression with variable number of groups?)
这是不可能的。您最好的选择是使用h.t
,然后使用
while (matcher.find()) {
...
... matcher.group(1); ...
...
}
功能does exist in .NET,但如上所述,Java中没有对应物。