1

是否可以仅使用正则表达式(无需额外代码!)来匹配第 n 个匹配项?例如:

“汽车”-“火车”-“船”-“自行车”

现在我只想匹配 BOAT,匹配的正则表达式是“[AZ]+”,但这也匹配第一个、第二个和第四个。

有没有人为此提供纯正则表达式解决方案?我需要这个,因为我无法更改使用正则表达式的代码,但我可以提供一个正则表达式。

最好的问候,罗宾

4

3 回答 3

5

我认为这个lookbehind应该做到这一点:

(?<=^("[A-Z]+"[\s-]+){2})"[A-Z]+"

它匹配字符串开头后两个单词的单词

在此处输入图像描述

于 2012-09-25T15:47:49.840 回答
0

(?!(\"[AZ] \"\s-\s){2})(\"[AZ] \") - 其中 {2} 表示您想要的索引。

唯一的问题是它也会返回指定索引之后的每个匹配项。您可以执行匹配并返回第一个结果。

在您的示例中使用正则表达式对其进行了测试。

于 2012-09-25T16:11:33.637 回答
0

如果我理解正确并且您将多个字符串逐个字符串放入一个正则表达式中,那么,这是不可能的

正则表达式本身没有比匹配时间更长的内存,所以如果你匹配一个东西,然后再匹配另一个东西,就没有第一个的信息。

于 2012-09-25T15:47:03.657 回答