修复字符串结尾的否定断言
Fixing Negative Assertion for end of string
仅当模式匹配且组末尾前没有特定单词时,我才尝试接受捕获组。我尝试了多种方法,none 似乎有效,显然我没有理解这个概念:
https://regex101.com/r/iP2xY0/3
https://regex101.com/r/iP2xY0/4
无论我做什么,我的捕获组都会捕获一些东西,我的目标是如果拒绝词存在于模式中间,则 return 不匹配。
RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice))(?!Reject).*
- RC:* 你好鲍勃·史密斯<\person>
- RC:* 你好大卫琼斯 *Notes Bla bla<\person>
- RC:* 你好 Ted Warren *拒绝 <\person>
捕获 Namegroup 应该 return:
- 鲍勃
- 大卫
- ''
所以 "Reject" 表示如果发现 NameGroup Capture 后跟以 <
结尾的任何内容,则捕获它,如果在 NameGroup 和 < 之间出现单词 Reject
,则不要。
我建议您将消极的前瞻性放在模式的开头。这首先检查你的拒绝词是否存在于你的字符串中,只有当它不存在时它才会尝试匹配字符串的其余部分:
(?!.*Rejected.*)RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice)).*
仅当模式匹配且组末尾前没有特定单词时,我才尝试接受捕获组。我尝试了多种方法,none 似乎有效,显然我没有理解这个概念:
https://regex101.com/r/iP2xY0/3 https://regex101.com/r/iP2xY0/4
无论我做什么,我的捕获组都会捕获一些东西,我的目标是如果拒绝词存在于模式中间,则 return 不匹配。
RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice))(?!Reject).*
- RC:* 你好鲍勃·史密斯<\person>
- RC:* 你好大卫琼斯 *Notes Bla bla<\person>
- RC:* 你好 Ted Warren *拒绝 <\person>
捕获 Namegroup 应该 return:
- 鲍勃
- 大卫
- ''
所以 "Reject" 表示如果发现 NameGroup Capture 后跟以 <
结尾的任何内容,则捕获它,如果在 NameGroup 和 < 之间出现单词 Reject
,则不要。
我建议您将消极的前瞻性放在模式的开头。这首先检查你的拒绝词是否存在于你的字符串中,只有当它不存在时它才会尝试匹配字符串的其余部分:
(?!.*Rejected.*)RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice)).*