キャラクターセット
さて、上記の例を通じて、Python の正規表現について予備的な理解ができました。正規表現のルールは何で、文字は何を意味するのかと疑問に思うかもしれません。
実は、これについて心配する必要はありません。対応する正規表現ルールのリストはこの章の後半で説明しますが、これらはインターネット上の Google で簡単に見つけることができます。そこで今回は、正規表現についての理解をさらに深め、正規表現の文字セットについて話していきます。
文字セットは、角括弧「[]」で囲まれた文字のセットです。文字セットを使用すると、複数の文字の 1 つと一致させることができます。
たとえば、C[ET]O を使用して CEO または CTO を一致させる場合、つまり、[ET] は E または T を表します。前述の [a-z] と同様、すべての小文字の 1 つであり、ここではハイフン "-" を使用して、連続する文字の文字範囲を定義します。もちろん、この書き方では [0-9a-fA-F] などの複数の文字範囲を含めることができます。これは単一の 16 進数に一致し、大文字と小文字は区別されません。文字と範囲の定義の順序は照合結果に影響を与えないことに注意してください。
実際、ここまで多くのことを述べてきましたが、文字セット内の角括弧「[]」のペア間の文字関係が or 関係であることを証明したいだけです。例:
import re a = 'uav,ubv,ucv,uwv,uzv,ucv,uov' # 字符集 # 取 u 和 v 中间是 a 或 b 或 c 的字符 findall = re.findall('u[abc]v', a) print(findall) # 如果是连续的字母,数字可以使用 - 来代替 l = re.findall('u[a-c]v', a) print(l) # 取 u 和 v 中间不是 a 或 b 或 c 的字符 re_findall = re.findall('u[^abc]v', a) print(re_findall) 输出的结果: ['uav', 'ubv', 'ucv', 'ucv'] ['uav', 'ubv', 'ucv', 'ucv'] ['uwv', 'uzv', 'uov']
この例では、否定された文字セットが使用されています。つまり、左角括弧「[」の後に山括弧「^」が続く場合、文字セットは否定されます。 。覚えておくべきことの 1 つは、否定された文字セットは単一の文字と一致する必要があるということです。例: q[^u] は、u が後に続かなくても q に一致するという意味ではありません。これは、q の後に u ではない文字が続くものと一致することを意味します。具体的には上記例の出力結果を比較すると分かります。
正規表現自体が、すべての数字に一致する \d などのいくつかのルールを定義していることは誰もが知っています。実際、これは [0-9] と同等です。例も以下に示します。これらの特殊な文字はセットの形式で解釈されます。
import re a = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789' # 概括字符集 # \d 相当于 [0-9] ,匹配所有数字字符 # \D 相当于 [^0-9] , 匹配所有非数字字符 findall1 = re.findall('\d', a) findall2 = re.findall('[0-9]', a) findall3 = re.findall('\D', a) findall4 = re.findall('[^0-9]', a) print(findall1) print(findall2) print(findall3) print(findall4) # \w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_] findall5 = re.findall('\w', a) findall6 = re.findall('[A-Za-z0-9_]', a) print(findall5) print(findall6)
出力結果:
['1', '2', '3', '4', '5', '6', '7', '8', '9'] ['1', '2', '3', '4', '5', '6', '7', '8', '9'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '1', '2', '3', '4', '5', '6', '7', '8', '9'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_