如何在正则表达式中设置通配符的最大数量?

时间:2014-03-10 11:13:37

标签: regex

我有一个包含大量XML的目录,其中一些包含两行,如下所示:

31/02/2014 11:15 | Bla Bla Bla Target1 Bla Bla Bla
31/02/2014 11:15 | Bla Bla Target 2 Bla Bla Bla Bla

重要的是我找到包含Target1和Target2的行。这两行总是彼此相邻,但Bla每次都可以不同,但​​可能永远不会超过100个字符。

所以我正在寻找的是:

Target1[Greedy match (Maximum 100)]Target2

3 个答案:

答案 0 :(得分:1)

您可以使用{n,m}量词来设置令牌匹配数量的上限或下限,例如: {0,100}将匹配至少0但最多100个实例。

但我猜这不是你的实际的问题。您可能只想查看Target1Target2之间是否只有一个换行符:

Target1[^\r\n]*\r?\n[^\r\n]*Target2

答案 1 :(得分:1)

由于Target1和Target2将在连续的行中,您可以在正则表达式的中间检查一个换行符:

(Target1.{1,100}[\n\r].{1,100}Target2)

答案 2 :(得分:0)

试试这个 -

Target1(?:\n|.){1,100}Target2

演示here