我是使用正则表达式的新手,我不知道如何使用否定超前来捕获组。也许有人可以帮忙?
这是语句,字符串的格式为:
Name1 3位数字&Name2&Name3&NameN-任何句子
除"-"
以外,每个名称都可以包含任何字符(包括" - "
,但不能包含" & "
)
每个名称用" & "
分隔
在名称后可以有任何字符的句子(包括" - "
),如果该句子存在,则始终以" - "
开头
示例:
John Doe 113和Smith先生
John Doe 113和Jane Doe-任何句子
John Doe 113,Jane Doe-Smith和Smith先生-任何句子
我想捕获第一个“&”和第一个“-”之间或字符串末尾的字符串。
我尝试过:
\d{3} & (.*(?!(?: - )))
但是示例2和3的匹配组返回不需要的字符:
John Doe 113和Jane Doe-任何句子
第1组:=>> 简·多伊-任何句子
我想要:珍·杜
https://regex101.com/r/w0mOMR/1
通过使用
\d{3} & (.*) - |\d{3} & (.*)
但是我想匹配第1组中的信息,而不是第2组中的信息或完全匹配中的信息
https://regex101.com/r/QEKmqC/1
最好捕获不同组中的所有名称,但我不知道该怎么做
预先感谢您的回答。