忽略python中地址中的序数

时间:2013-03-19 23:42:42

标签: python regex

我写了这个正则表达式来匹配像组合这样的字符串。现在我想修改这个正则表达式,而不是让它匹配这些字符串:'st,nd,rd,th'。我希望匹配所有其他组合的字符串,但alpha部分不应该是列出的字符串之一。

_NUM_ALPHA_PAIR_RE = re.compile(r'[0-9/]+[A-Z,a-z]+', re.I)

我想匹配:'6A'或'6S'但我不想匹配'1ST'或'2nd'

1 个答案:

答案 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