3

この正規表現は、組み合わせのような文字列に一致するように作成しました。ここで、この正規表現を変更して、次の文字列と一致させないようにします:'st、nd、rd、th'。のように組み合わせた他のすべての文字列と一致させたいのですが、アルファ部分はリストされた文字列の1つであってはなりません。

_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 に答える