正则表达式否定超前和捕获组

时间:2018-08-13 10:27:39

标签: regex-negation regex-group

我是使用正则表达式的新手,我不知道如何使用否定超前来捕获组。也许有人可以帮忙?

这是语句,字符串的格式为:
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

最好捕获不同组中的所有名称,但我不知道该怎么做

预先感谢您的回答。

0 个答案:

没有答案