Python正则表达式匹配多个唯一值

时间:2018-03-22 02:56:52

标签: python regex unique

我需要将字符串与特定字母匹配,但不应复制任何字母。例如,[AEIOU]不应该匹配' AAEIOU'或者' AAEEIOU'。它应该只匹配AEIOU'并且字母的顺序无关紧要。我尝试使用精确的量词与{}但是没有用。

3 个答案:

答案 0 :(得分:2)

您可以使用否定前瞻:

^(?!.*(.).*\1)[AEIOU]+$

您放在括号中的任何内容都将是您选择的字符子集。

>>> import re
>>> tests = ['AAEIOU', 'AAEEIOU', 'AEIOU']
>>> for test in tests:
..    print(re.match(r'^(?!.*(.).*\1)[AEIOU]+$', test))
None
None
<_sre.SRE_Match object; span=(0, 5), match='AEIOU'>

答案 1 :(得分:0)

这可能效率低下,但也许使用计数器?为每个构建一个计数器,然后检查它们是否相等?

答案 2 :(得分:0)

不使用正则表达式,但您可以使用python字符串方法计算字符串中的字符数。这可用于开发过滤功能,有效地,可以获得您想要的结果。

AEIOU

结果只是符合条件的一场比赛,

app

这不是最高效的选项,但简单易读。