我有一个看起来像这样的字符串
xyz 123;abc;xyz 123;efg;
我想删除重复项并在字符串中只保留一个匹配项。我希望输出像这样
xyz 123;abc;efg;
我尝试使用(?<=;|^)([^;]*);(\1)+(?=;|$)
,但无法弄清楚如何删除其中一个重复项。有什么建议 ?
答案 0 :(得分:0)
由于您没有指定语言,我会假设原始正则表达式中的标记都使用您正在使用的任何语言。
(([^;]*;).*)\2
替换为\1
(([^;]*;).*)
将以下内容捕获到捕获组1中
([^;]*;)
将以下内容捕获到捕获组2中
- [^;]*
任意次数匹配除分号字符;
以外的任何字符
;
按字面意思匹配分号字符\2
匹配与第二个捕获组答案 1 :(得分:0)
感谢大家的建议。最后我使用这个正则表达式
(?<=,|^)([^,]*)(?=.*\\b\\1\\b)(?=,|$)
答案 2 :(得分:0)
以下是针对java的。
对于重复的单词(结果/随机),您可以使用正则表达式字符串作为
\b(\w+)\b(?=.*?\b\1\b
对于字符串中的重复字符(结果/随机),您可以使用
(.)(?=.*?\1)