我正在做一个前瞻。*(?= 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
----------------------------------------
答案 0 :(得分:2)
懒惰量词
让它成为一个懒惰的比赛:
.*?(?=foo|bar)
*
量词是贪婪的,因此.*
匹配字符串的结尾。然后引擎只会根据需要向后追溯,以便前瞻匹配 - 为我们提供最长匹配。
相反,?
会使*
量词“懒惰”或“不情愿”,因此.*?
只会根据需要匹配 - 给我们最短匹配强>
<强>参考强>