如果稍后在字符串中发现“超过”字样(粗体),我想使用正则表达式否定提前查找来使匹配失败。
示例文本: 卖方根据本协议或根据本协议或与之相关而签立或交付的任何文件或证明的陈述,担保,赔偿,契约或其他义务(无论是明示或暗示)或与之相关的合计责任,应超过十万美元(100,000美元)(“责任限额”)。如果卖方对买方的总责任超过了责任限额,则卖方应承担全部责任,但不超过 超过 责任限额。
正则表达式: (?(?(((直到\ s 和\ s ,除非|受苦|(?in?\ sany?\ s case?|应该\ s 不)\ s * )是否超出了?|集合(\ s + \ S +){0,30}?\ s +((?in?\ sany?\ s case?|应该\ s not)\ s * )是否超出(s?)))(\ s + \ S +){0,30}?\ s +(?((((||)?\ s * \ $ [0-9,。%] \ s < / em> [)|]]?)))\ s +(?!((?\ s *(the)?\ s *“?deductible”?\ s *)?)))(\ s * \ S +){ 0,30}?\ s +((偿还|责任|为\ s 支付 )?\ s * \ b(全部|全部|整个)\ b \ s * (((such)|(amount \ s of))?(\ s + \ S +){0,30}?\ s +(claims?| loss(es)?| damage(s)?|金额))|全部\ s 不可识别\ s *((索赔?? |损坏?)|金额|损坏?)\ s *([(| [[]?\ s *(包括\ s *(购物篮\ s 金额| the?\ s 金额\ s of?\ s the?\ s * basket))[)|]] ?)|从\ s *?\ s *第一个\ s *美元\ s *(\ s *损失(es)?)?|到\ s *美元\ s *零)(?!。 *(超过))))
我在正则表达式的末尾使用了否定的超前查询,但是如果找到单词“超过”,它会使您感到困惑。如果找不到,则正则表达式可以正常工作。请帮助
答案 0 :(得分:0)
您可以执行以下操作(带有负查找的脾气暴躁的令牌)
/(?:(?!exceed).)*$/
同样,如果文本内容过多,性能可能会成为问题
答案 1 :(得分:0)
确保正确使用了类似((\ s * \ S +){0,30}?\ s +)之类的接近运算符。通过使用(。*?)替换其中的((\ s * \ S +){0,30}?\ s +)之一,我的问题得到了解决。尽管使用通配符不是一个好方法,但是如果万不得已,则必须使用它与?惰性运算符,并在其后指定一些语言。