正则表达式OR条件匹配两种情况,如果我们在字符串中有两个单词

时间:2014-07-10 05:56:57

标签: regex regex-greedy

我正在做一个前瞻。*(?= foo | bar),并查找是否存在以下单词中的任何一个。使用OR条件,但它不会在第一次匹配时停止,甚至它也匹配其他条件

以下是我要解析的内容。内容将有2种格式。一个有foo和bar,另一个只有foo或bar。在第一种情况下,它应该停留在foo本身。

Testing 1.0

----------------------------------------

       foo:                1.0

     Some Text          

 bar:      1.5

----------------------------------------

另一种格式

Testing 1.0

----------------------------------------


 bar:      1.5

----------------------------------------

1 个答案:

答案 0 :(得分:2)

懒惰量词

让它成为一个懒惰的比赛:

.*?(?=foo|bar)

*量词是贪婪的,因此.*匹配字符串的结尾。然后引擎只会根据需要向后追溯,以便前瞻匹配 - 为我们提供最长匹配

相反,?会使*量词“懒惰”或“不情愿”,因此.*?只会根据需要匹配 - 给我们最短匹配

<强>参考