例如,在此字符串中没有\s
:
abodnpjdcqe
只应匹配d
。
但在我的情况下有数千个不同的字符,是否可以使用ONLY regxp来匹配字符串中出现的所有字符多次?似乎所有其他问题都使用其他工具。
答案 0 :(得分:1)
您可以使用此正则表达式:
([a-zA-Z])(?=.*\1)
([a-zA-Z])
匹配任何字母并将其捕获为group #1
,即\1
(?=.*\1)
确保此匹配成功仅,然后至少有一个后向引用\1
,即字符本身。答案 1 :(得分:1)
当anubhava演示它时,可以找到字符串中出现两次的字符,而且我没有看到任何其他正则表达式模式。
但是,只有正则表达式存在问题:
a123a456a789a
,模式将返回a
三次而不是一次。如果您的目标是获取唯一重复字符列表,则可能会出现问题(但很容易以编程方式解决) 所以,回答你的问题:我的回答是否定的。
一个简单的方法,使用代码来循环遍历字符串的字符并构建一个关联数组,其中键是字符,值是出现次数。然后,删除值为1的每个项目并提取密钥。
注意:您可以使用此模式解决重复结果(2。)的问题:
(.)(?=(?:(?!\1).)*\1(?:(?!\1).)*$)
或者是否有占有量词:
(.)(?=(?:(?!\1).)*+\1(?:(?!\1).)*+$)
但我担心复杂性会更高。
所以,用最喜欢的语言保持最好的方式。