Regex 在一个句子中给出全名,除了一个句子外,还有什么方法可以匹配这个全名吗?

Regex 在一个句子中给出全名,除了一个句子外,还有什么方法可以匹配这个全名吗?,regex,Regex,下面是我想出的正则表达式 它用于匹配除给定名称外的任何名+姓 (第一次)(最后一次)上了大学 ^(?!(汤姆汤姆))([A-Za-z'$]+[A-Za-z'$]+)上了大学 汤姆上了大学(不会匹配) 这就是我要找的 然而,当使用撇号时 “汤姆汤姆(比赛) 我是汤姆(比赛) 汤姆·托姆(比赛) 汤姆(不匹配) 汤姆的(不匹配) 最后两个应该是匹配的 我错过了什么 最后2个将不匹配,因为在开始时出现了否定的前瞻,这表明右侧不是tom。这在最后两个例子中并不成功,因为这两个例子都是从tom开始的 一

下面是我想出的正则表达式

它用于匹配除给定名称外的任何名+姓

(第一次)(最后一次)上了大学

^(?!(汤姆汤姆))([A-Za-z'$]+[A-Za-z'$]+)上了大学

汤姆上了大学(不会匹配)

这就是我要找的

然而,当使用撇号时

“汤姆汤姆(比赛)
我是汤姆(比赛)
汤姆·托姆(比赛)
汤姆(不匹配)
汤姆的(不匹配)

最后两个应该是匹配的


我错过了什么

最后2个将不匹配,因为在开始时出现了否定的前瞻,这表明右侧不是tom。这在最后两个例子中并不成功,因为这两个例子都是从tom开始的

一种方法是在负前瞻之后添加一个不应与名称中允许的匹配项相匹配的否定字符类

^(?!tom tom[^A-Za-z'$])([A-Za-z'$]+ [A-Za-z'$]+) went to college

由于开始时的负面展望,最后2个将不匹配,这表明右侧不是tom。这在最后两个例子中并不成功,因为这两个例子都是从tom开始的

一种方法是在负前瞻之后添加一个不应与名称中允许的匹配项相匹配的否定字符类

^(?!tom tom[^A-Za-z'$])([A-Za-z'$]+ [A-Za-z'$]+) went to college

谢谢你的回答,你的解释解决了我的问题和其他表达方式。谢谢你的回答,你的解释解决了我的问题和其他表达方式。