正在修复字符串结尾的否定断言

2024-10-02 10:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图接受一个捕获组只有当模式匹配,没有一个特定的词之前的组结束。我尝试过很多方法,但似乎都不管用,显然我不明白这个概念:

https://regex101.com/r/iP2xY0/3https://regex101.com/r/iP2xY0/4

不管我做什么,我的捕获组捕获一些东西,我的目标是如果拒绝词存在于模式中间,则不返回匹配。你知道吗

RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice))(?!Reject).*
  • RC:*你好,鲍勃·史密斯<;\person>
  • RC:*嗨,大卫·琼斯*便笺Bla Bla<;\person>
  • RC:*嗨,特德·沃伦*被拒绝了<;\person>

Capture Namegrouop应该返回:

  • 鲍勃
  • 大卫
  • ''

因此,“Reject”表示如果在NameGroup Capture后面发现任何以<结尾的内容,那么就捕获它,如果在NameGroup和<;单词Reject之间出现,那么就不捕获它。你知道吗


Tags: 方法httpsltgtcom概念大卫capture
1条回答
网友
1楼 · 发布于 2024-10-02 10:22:35

我建议你把消极的眼光放在模式的开头。这将首先检查拒绝字是否存在于字符串中,并且仅当拒绝字不存在时,才会尝试匹配字符串的其余部分:

(?!.*Rejected.*)RC:\*.*?(?P<Capture>(Bob|David|Ted|Alice)).*

https://regex101.com/r/iP2xY0/6

相关问题 更多 >

    热门问题