3

我正在尝试编写一个正则表达式以在 Java 程序中使用,该程序将识别可能出现在输入中未知次数的模式。我愚蠢的小例子是:

String patString = "(?:.*(h.t).*)*";

然后我尝试通过循环 matcher.group(i) 从“小屋很热”之类的行中访问匹配项。它只记住最后一个匹配项(在这种情况下,“热”),因为只有一个捕获组——我猜 matcher.group(1) 的内容会在捕获组被重用时被覆盖。不过,我想要的是某种同时包含“小屋”和“热”的数组

有一个更好的方法吗?FWIW,我真正想做的是在信号词之后拿起所有(可能是多词)专有名词,中间可能有其他词和标点符号。因此,如果“saw”是信号并且我们有“我看到 Bob 和 John Smith 以及他的妻子 Margaret”,我想要 {"Bob","John Smith","Margaret"}。

4

1 回答 1

6

(类似问题:组数可变的正则表达式?

这是不可能的。您最好的选择是使用h.t, 并使用

while (matcher.find()) {
    ...
    ... matcher.group(1); ...
    ...
}

.NET中确实存在该功能,但如上所述,Java 中没有对应的功能。

于 2011-03-26T19:50:02.123 回答