3

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

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

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

4

1 回答 1

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
于 2013-03-19T23:49:04.313 回答