2

文字 A、B、または C のみで構成される単語に一致させるには、どの正規表現を使用できますか? たとえば、正規表現は ABCBACBACBABBABCC と A と B と C をキャッチしますが、ABCD、ABC1 などはキャッチしません。

4

2 に答える 2

8

どう\b[ABC]+\bですか?それは動作しますか?

>>> regex = re.compile(r'\b[ABC]+\b')
>>> regex.match('AACCD')  #No match
>>> regex.match('AACC')   #match
<_sre.SRE_Match object at 0x11bb578>
>>> regex.match('A')      #match
<_sre.SRE_Match object at 0x11bb5e0>

\b単語境界です。Aしたがって、ここでは、単語境界の後に,BまたはC文字のみが続き、次の単語境界まで一致します。


正規表現が嫌いな人のために、setここでもオブジェクトを使用できます。

>>> set("ABC").issuperset("ABCABCABC")
True
>>> set("ABC").issuperset("ABCABCABC1")
False
于 2013-05-20T13:06:49.613 に答える
0

探している正規表現はr'\b([ABC]+)\b'.

コンパイルできます:

>>> regex = re.compile(r'\b([ABC]+)\b')

そして、それを使っていくつかのことができます:

>>> regex.match('ABC') # find a match with whole string.
>>> regex.search('find only the ABC') # find a match within the whole string.
>>> regex.findall('this will find only the ABC elements in this ABC test text') # find 2 matches.

大文字と小文字を区別しない場合は、次を使用します。

>>> regex = re.compile(r'\b([ABC]+)\b', re.I)
于 2013-05-20T13:15:10.770 に答える