RegEx表达式以删除重复的单词组



我正在尝试从以下文本中删除重复的值:

[John Smith][John Smith][Jane Doe][Jane Doe][Doe][John][Smith John][John Smith Sr]

然而,我需要将括号内的每组单词视为一个独特的值。这样,如果一个单词出现在多个括号内,但括号内的单词组不同,我会保留所有值。

使用我的示例文本,我希望得到以下

[John Smith][Jane Doe][Doe][John][Smith John][John Smith Sr]

但是,当我使用这个RegEx(?:[)(.+)(?:])(?=.*b1,?)时,我得到了以下文本

[Jane Doe][Doe][Smith John][John Smith Sr]

我哪里错了?感谢我能得到的任何帮助。

捕获每个遇到的方形支撑子字符串,然后检查同一子字符串是否在字符串中稍后再次出现——如果是,则替换它。

([[^]]+])(?=.*1)

使用否定字符类([^]](允许使用贪婪量词CCD_;过度匹配"——这意味着regex不会浪费时间,在回溯到较小的潜在匹配之前,稍后尝试在字符串中匹配多个连续的方括号。

https://regex101.com/r/OD1hia/1

如果使用javascript或其他需要转义否定字符类中的大括号的环境,请在其中添加斜线。

https://regex101.com/r/Wm3K4f/1

在Stack Overflow上会有很多这种技术的重复,但我没有找到一个确切的";雪花;需要方括号的副本。

您还必须捕获第一组中的方形制动器:

([.+])(?=.*1)

通过这种方式,您可以确保检查整个制动器内容的副本。

最新更新