我正在尝试从以下文本中删除重复的值:
[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)
通过这种方式,您可以确保检查整个制动器内容的副本。