Python 3正規表現(一)基本文法規則
4508 ワード
正規表現は強力な文字列処理ツールであり、文字列がパターンに一致しているかどうかを簡単にチェックすることができます.
一、pythonにおける正規表現の基本文法規則
シーケンス番号
構文
説明する
式#シキ#
オブジェクトの照合に成功しました
1
一般文字
対応する文字を一致させる
abc
abc
2
.
改行記号()以外の任意の文字を一致させる
a.c
abc
3
\
変換文字、元の文字の意味を変えることができます
a.c
a.c
4
\d
マッチング数:0~9
\dabc
1abc
5
\w
単語文字に一致し、a~z;A~Z;0~9
\w\w\w
oX2
6
\s
一致するスペース文字(t,,r,f,v)
a\sc
a c
7
\D
非数値文字の一致
\Dabc
aabc
8
\W
単語以外の文字の一致
a\Wc
a c
9
\S
スペース以外の文字の一致
\S\Sc
1bc
10
[]
文字セット、対応する位置は文字セットの任意の文字であってもよい
a[def]c
aec
11
[^]
文字セットの内容を逆にする
a[^def]c
a2c
12
[a-z]
範囲文字セットの指定
a[A-Z]c
aBc
13
*
前の文字を0回または無限回に許可
a*b
aaabまたはb
14
+
前の文字は少なくとも1回表示されます
a+b
aaabまたはab
15
?
前の文字は1回しか表示されないか、表示されません.
a?b
abまたはb
16
{m}
前の文字がm回しか表示されないことを許可
a{3}b
aaab
17
{m,n}
前の文字を少なくともm回、最大n回(nを書かない場合は少なくともm回)許可します.
a{3,5}bとa{3,}
aaaabとaaaaab
18
^
文字列の先頭に一致し、複数行の内容が一致するときに各行の先頭に一致します.
^abc
abc
19
$
文字列の末尾に一致し、複数行の内容が複数行の末尾に一致します.
abc&
abc
20
\A
文字列の開始位置を一致させ、マルチラインモードを無視
\Aabc
abc
21
\Z
文字列の終了位置を一致させ、マルチラインモードを無視
abc\Z
abc
22
\b
単語の開始位置または終了位置にある空の文字列を一致させる
hello\bworld
hello world
23
\B
単語の開始位置または終了位置にない空の文字列を一致させる
he\Bllo
hello
24
|
左右の表現がいずれかを満たすことを表す.
abc|cba
abcまたはcba
25
(…)
囲まれた式をグループ化し、インデックスを使用して個別に取り出すことができます.
(abc)d
abcd
26
(?P…)
グループに名前を付けると、インデックスまたは名前でグループを除去できます.
(?Pabc)d
abcd
27
umber
インデックスがnumberの内容を参照
(abc)d\1
abcdabc
28
(?P=name)
このnameパケットの内容を参照
(?Pabc)d(?P=id)
abcdabc
29
(?:…)
グループ化された非取得モードは、インデックスの計算時にこのグループをスキップします.
(?:a)b(c)d\1
abcdc
30
(?iLmsux)
グループの中でモードを設定することができて、iLmsuxの中の各文字は1つのモードを代表して、単独で紹介します
(?i)abc
Abc
31
(?#…)
注記、#の後の内容は無視されます
ab(?#注釈)123
ab123
32
(?=…)
順序肯定環視、位置右側が括弧内正則に一致できることを示す
a(?=\d)
a 1最後の結果はaを得る
33
(?!…)
順序は環視を否定して、位置の右側が括弧内の正則に一致しないことを表します
a(?!\w)
a c最後の結果はaを得る
34
(?<=…)
逆順肯定環視は、位置左側が括弧内正則に一致することを示す
1(?<=\w)a
1a
35
(?
逆順否定ループは、位置左側がカッコ内の正則に一致しないことを示します.
1 (?
1 a
36
(?(id/name)yes|no)
前のインデックスがidまたは名前がnameのパケットマッチングに成功した場合、yes領域の式に一致します.そうしないと、no領域の式に一致します.noは省略できます.
(\d)(?(1)\d|a)
32
二、(?iLmsux)パケット設定モード
ここで、「i」、「L」、「m」、「s」、「u」、「x」は、文字列に一致せず、pythonのreモジュール(re.I、re.L、re.M、re.S、re.U、re.X)に対応する6つのオプションを表します.pythonソースコードでは、次のように表示されます.
6つのモードは正規表現で複数のモードを同時に使用することができ、pythonではビットまたは演算子|を使用して複数のモードを同時に追加することができる:re.compile(”, re.I|re.M|re.S)
三、スラッシュの使用
一般的なプログラミング言語では、反スラッシュ""は反転文字を表し、反スラッシュの後ろに文字を付けると特定の意味を表すことができます.次に、一般的な変換文字をいくつか挙げます.
シーケンス番号
エスケープ文字
説明する
1
\f
ページを変更して、現在の位置を次のページの先頭に移動します.
2
改行、現在の位置を次の行の先頭に移動
3
\r
戻り、現在の位置を行の先頭に移動
4
\t
水平タブ、次のTAB位置にジャンプ
5
\v
垂直時計(まだこれを使ったことがありません)
6
\\
スラッシュ文字''を表します
正規表現のルールでは、「」はエスケープ文字の意味であり、前述の基本文法ルールでも述べていますが、一般的に言語になると、「」にもエスケープ文字の意味があるので、コードを書くときに正規表現の「」を使うときは、4つの「」を書く必要があります.「\\」などの真のスラッシュ文字を表すことができます.
「\\」:ここで最初と3番目はプログラミング言語でエスケープの役割を果たし、結果:「\」で、正規表現では1回のエスケープで真の反スラッシュ文字を表します.
しかしpython言語では、この問題を考慮しなくてもいいです.書き上げた文字列の前に「r」を付けて、コンパイラにこの文字列がオリジナルの文字列であることを伝え、エスケープしないでください.
たとえば、前の例の正規表現はr""で表すことができます.この‘r’を加えるとpython言語がこの文字列をエスケープしないことを伝えるだけなので、正規表現では正規表現のルールに合致しなければならない.同様に、1つの数字に一致する「d」はr」dと書くことができます.したがって、pythonに正規表現を書くときは、前に「r」を書く習慣を身につけましょう.
四、まとめ
これが正規表現の基本文法です.次にpython 3で正規表現であるreモジュールを用いた学習ノートを書きます.
皆さんは書く時に参考にすることができます:最も完全な常用正規表現大全
一、pythonにおける正規表現の基本文法規則
シーケンス番号
構文
説明する
式#シキ#
オブジェクトの照合に成功しました
1
一般文字
対応する文字を一致させる
abc
abc
2
.
改行記号()以外の任意の文字を一致させる
a.c
abc
3
\
変換文字、元の文字の意味を変えることができます
a.c
a.c
4
\d
マッチング数:0~9
\dabc
1abc
5
\w
単語文字に一致し、a~z;A~Z;0~9
\w\w\w
oX2
6
\s
一致するスペース文字(t,,r,f,v)
a\sc
a c
7
\D
非数値文字の一致
\Dabc
aabc
8
\W
単語以外の文字の一致
a\Wc
a c
9
\S
スペース以外の文字の一致
\S\Sc
1bc
10
[]
文字セット、対応する位置は文字セットの任意の文字であってもよい
a[def]c
aec
11
[^]
文字セットの内容を逆にする
a[^def]c
a2c
12
[a-z]
範囲文字セットの指定
a[A-Z]c
aBc
13
*
前の文字を0回または無限回に許可
a*b
aaabまたはb
14
+
前の文字は少なくとも1回表示されます
a+b
aaabまたはab
15
?
前の文字は1回しか表示されないか、表示されません.
a?b
abまたはb
16
{m}
前の文字がm回しか表示されないことを許可
a{3}b
aaab
17
{m,n}
前の文字を少なくともm回、最大n回(nを書かない場合は少なくともm回)許可します.
a{3,5}bとa{3,}
aaaabとaaaaab
18
^
文字列の先頭に一致し、複数行の内容が一致するときに各行の先頭に一致します.
^abc
abc
19
$
文字列の末尾に一致し、複数行の内容が複数行の末尾に一致します.
abc&
abc
20
\A
文字列の開始位置を一致させ、マルチラインモードを無視
\Aabc
abc
21
\Z
文字列の終了位置を一致させ、マルチラインモードを無視
abc\Z
abc
22
\b
単語の開始位置または終了位置にある空の文字列を一致させる
hello\bworld
hello world
23
\B
単語の開始位置または終了位置にない空の文字列を一致させる
he\Bllo
hello
24
|
左右の表現がいずれかを満たすことを表す.
abc|cba
abcまたはcba
25
(…)
囲まれた式をグループ化し、インデックスを使用して個別に取り出すことができます.
(abc)d
abcd
26
(?P…)
グループに名前を付けると、インデックスまたは名前でグループを除去できます.
(?Pabc)d
abcd
27
umber
インデックスがnumberの内容を参照
(abc)d\1
abcdabc
28
(?P=name)
このnameパケットの内容を参照
(?Pabc)d(?P=id)
abcdabc
29
(?:…)
グループ化された非取得モードは、インデックスの計算時にこのグループをスキップします.
(?:a)b(c)d\1
abcdc
30
(?iLmsux)
グループの中でモードを設定することができて、iLmsuxの中の各文字は1つのモードを代表して、単独で紹介します
(?i)abc
Abc
31
(?#…)
注記、#の後の内容は無視されます
ab(?#注釈)123
ab123
32
(?=…)
順序肯定環視、位置右側が括弧内正則に一致できることを示す
a(?=\d)
a 1最後の結果はaを得る
33
(?!…)
順序は環視を否定して、位置の右側が括弧内の正則に一致しないことを表します
a(?!\w)
a c最後の結果はaを得る
34
(?<=…)
逆順肯定環視は、位置左側が括弧内正則に一致することを示す
1(?<=\w)a
1a
35
(?
逆順否定ループは、位置左側がカッコ内の正則に一致しないことを示します.
1 (?
1 a
36
(?(id/name)yes|no)
前のインデックスがidまたは名前がnameのパケットマッチングに成功した場合、yes領域の式に一致します.そうしないと、no領域の式に一致します.noは省略できます.
(\d)(?(1)\d|a)
32
二、(?iLmsux)パケット設定モード
ここで、「i」、「L」、「m」、「s」、「u」、「x」は、文字列に一致せず、pythonのreモジュール(re.I、re.L、re.M、re.S、re.U、re.X)に対応する6つのオプションを表します.pythonソースコードでは、次のように表示されます.
I = IGNORECASE #
L = LOCALE # ,
U = UNICODE # \w,\W,\b,\B UNICODE
M = MULTILINE # , ^ $
S = DOTALL # '.' ,
X = VERBOSE # , #
6つのモードは正規表現で複数のモードを同時に使用することができ、pythonではビットまたは演算子|を使用して複数のモードを同時に追加することができる:re.compile(”, re.I|re.M|re.S)
三、スラッシュの使用
一般的なプログラミング言語では、反スラッシュ""は反転文字を表し、反スラッシュの後ろに文字を付けると特定の意味を表すことができます.次に、一般的な変換文字をいくつか挙げます.
シーケンス番号
エスケープ文字
説明する
1
\f
ページを変更して、現在の位置を次のページの先頭に移動します.
2
改行、現在の位置を次の行の先頭に移動
3
\r
戻り、現在の位置を行の先頭に移動
4
\t
水平タブ、次のTAB位置にジャンプ
5
\v
垂直時計(まだこれを使ったことがありません)
6
\\
スラッシュ文字''を表します
正規表現のルールでは、「」はエスケープ文字の意味であり、前述の基本文法ルールでも述べていますが、一般的に言語になると、「」にもエスケープ文字の意味があるので、コードを書くときに正規表現の「」を使うときは、4つの「」を書く必要があります.「\\」などの真のスラッシュ文字を表すことができます.
「\\」:ここで最初と3番目はプログラミング言語でエスケープの役割を果たし、結果:「\」で、正規表現では1回のエスケープで真の反スラッシュ文字を表します.
しかしpython言語では、この問題を考慮しなくてもいいです.書き上げた文字列の前に「r」を付けて、コンパイラにこの文字列がオリジナルの文字列であることを伝え、エスケープしないでください.
たとえば、前の例の正規表現はr""で表すことができます.この‘r’を加えるとpython言語がこの文字列をエスケープしないことを伝えるだけなので、正規表現では正規表現のルールに合致しなければならない.同様に、1つの数字に一致する「d」はr」dと書くことができます.したがって、pythonに正規表現を書くときは、前に「r」を書く習慣を身につけましょう.
四、まとめ
これが正規表現の基本文法です.次にpython 3で正規表現であるreモジュールを用いた学習ノートを書きます.
皆さんは書く時に参考にすることができます:最も完全な常用正規表現大全