我写了这个正则表达式来匹配像组合这样的字符串。现在我想修改这个正则表达式,而不是让它匹配这些字符串:'st,nd,rd,th'。我希望匹配所有其他组合的字符串,但alpha部分不应该是列出的字符串之一。
_NUM_ALPHA_PAIR_RE = re.compile(r'[0-9/]+[A-Z,a-z]+', re.I)
我想匹配:'6A'或'6S'但我不想匹配'1ST'或'2nd'
答案 0 :(得分:3)
使用否定前瞻(?!st|nd|rd|th)
:
_NUM_ALPHA_PAIR_RE = re.compile(r'[0-9/]+(?!st|nd|rd|th)[,a-z]+', re.I)
In [125]: import re
In [126]: _NUM_ALPHA_PAIR_RE = re.compile(r'[0-9/]+(?!st|nd|rd|th)[,a-z]+', re.I)
In [127]: _NUM_ALPHA_PAIR_RE.match('6A')
Out[127]: <_sre.SRE_Match at 0xb141c98>
In [128]: _NUM_ALPHA_PAIR_RE.match('1ST')
# None