我需要匹配两个单词的第一个实例(" ham"或" turkey"),如果任何一个单词跟在单词"三明治"之后。和#34;禁止"并没有出现在"三明治" ("火腿"或"火鸡")。
reuben sandwich with ham and turkey ham sandwich with cheese
reuben sandwich with forbidden ham and turkey ham sandwich with cheese
我使用的正则表达式sandwich(.*?)(?!.*forbidden)(ham)((.*?)(turkey))?
仍与第二句匹配。如何修改正则表达式与第二句不匹配。提前谢谢!
答案 0 :(得分:1)
您可以使用
sandwich((?:(?!forbidden).)*?)(ham|turkey)
请参阅regex demo
sandwich
- 匹配子字符串sandwich
((?:(?!forbidden).)*?)
- 第1组匹配任何未开始forbidden
字的字符,零次或多次,尽可能少(ham|turkey)
- ham
或turkey
。以下是您可以针对您的方案考虑的一些变体:
ham
之后匹配turkey
和/或sandwich
,请使用sandwich((?:(?!forbidden).)*?)(ham|turkey)(.*?)(ham|turkey)
ham
然后turkey
或turkey
再加上ham
,则可以在上述正则表达式中添加否定前瞻:{{3} }。