この記事の内容は、Python の正規表現で re モジュールを使用する方法についてです。 re モジュールの使い方の紹介はある程度参考になるので、困っている友人は参考にしていただければ幸いです。
正規表現は、文字列を処理するために最も一般的に使用される方法であり、コーディングのあらゆる場所で正規表現が使用されています。
Python の正規表現は他の言語の正規表現とは少し異なります:
1. 文字列を置換する場合、置換された文字列は関数
2 、つまり分割になります。関数は分割数を指定できますが、これは落とし穴につながります。
3. 前の項目で定義された式は固定長である必要があります
以下は、使用方法の詳細な説明です。実際、注意してください 上記の 3 つの違いは問題ありません
1, match
説明:
re.match の試行文字列の先頭から一致する パターンが開始位置で正常に一致しない場合、match() は None を返します。
構文:
re.match(pattern, string, flags=0)
flags はオプションの識別子で、ビット単位または (|) を指定することで複数の識別子を取得できます。たとえば、re.I | re.M は I および M 識別子に設定されます:
##Modifier | #説明 |
| 一致の大文字と小文字を区別しないようにします|
#ロケールを意識したマッチングを行う |
|
複数行のマッチング、^ と $ |
##re.S |
## に影響します #make.改行を含むすべての文字と一致します |
re.U |
# Unicode 文字セットに従って文字を解析します。このフラグは \w、\W、\b、\B に影響します。 |
##re.X |
このフラグを使用すると、より柔軟な形式が提供されるため、正規表現の記述が理解しやすくなります。
|
re.match メソッドは、一致が成功した場合、一致するオブジェクトを返します。group(num) または groups() 一致オブジェクト関数を使用して、一致する式を取得できます。 group() または group(0) は、正規表現全体の一致結果を返します。 例: s= 'abc123abc' print(re.match('[a-z]+', s)) # <_sre.SRE_Match object; span=(0, 3), match='abc'> print(re.match('[a-z]+', s).group(0)) # abc print(re.match('[\d]+', s)) # None print(re.match('[A-Z]+', s, re.I).group(0)) # abc print(re.match('[a-z]+', s).span()) # (0, 3) 2、search 手順: re.search は全体をスキャンします。文字 連結により、最初に一致したものが返されます。 構文: re.search(pattern, string, flags=0) re.search メソッドは、一致が成功した場合は一致するオブジェクトを返し、そうでない場合は返します。なし。一致式は、group(num) または groups() 一致オブジェクト関数を使用して取得できます。 例: s = 'abc123abc' print(re.search('[a-z]+', s).group()) # abc print(re.search('[a-z]+', s).span()) # (0, 3) print(re.search('[\d]+', s).group()) # 123 print(re.search('[\d]+', s).span()) # (3, 6) print(re.search('xyz', s)) # None groupdict groupdict 一致するすべての名前付きサブグループの辞書を返します。 print(re.search('[a-z]+', s).groupdict()) # {} print(re.search('(?P<letter>[a-z]+)(?P<num>\d+)', s).groupdict()) # {'num': '123', 'letter': 'abc'} 3、sub および subn 説明: re.sub は、文字列内の一致する項目を置換するために使用されます。 re.subn は、置換された文字列と置換の数を含むタプルを返します。 構文: sub(pattern, repl, string, count=0, flags=0) repl: 置換される文字列は関数にすることもできます。 count: パターン マッチング後の置換の最大数。デフォルト値は 0 で、これはすべての一致を置換することを意味します。 例: s = 'abc123abc' print(re.sub('[\d]+', '数字', s)) # abc数字abc print(re.sub('[a-z]+', '字母', s, 1)) # 字母123abc # 将匹配的数字乘以 2 def double(matched): value = int(matched.group('value')) return str(value * 2) # repl是一个函数 print(re.sub('(?P<value>\d+)', double, s)) # abc246abc print(re.subn('[\d]+', '数字', s)) # ('abc数字abc', 1) print(re.subn('[a-z]+', '字母', s,)) # ('字母123字母', 2) print(re.subn('[a-z]+', '字母', s, 1)) # ('字母123字母', 1) 4、compile 説明: re.compile は次の目的で使用されます。正規表現のコンパイル。match() と search() の 2 つの関数で使用する正規表現 (パターン) オブジェクトを生成します。 文法: compile(pattern, flags=0) 例: s = 'abc123abc' p = re.compile('[\d]+') print(p.match(s, 4, 5).group(0)) # 2 从位置4开始匹配到位置5 print(p.search(s).group(0)) # 123 5, findall 説明: re.findall は、文字列内の正規表現に一致するすべての部分文字列を検索し、リストを返します。一致するものが見つからない場合は、空のリストが返されます。 構文: findall(pattern, string, flags=0) 例: s = 'abc123abc' print(re.findall('[a-z]+', s)) # ['abc', 'abc'] print(re.findall('[h-n]+', s)) # [] 6, finditer 説明: finditer は findall に似ており、文字列内の正規表現に一致するすべての部分文字列を検索し、それらをイテレータとして返します。 構文: finditer(pattern, string, flags=0) 例: s = 'abc123def' it = re.finditer('[a-z]+', s) for match in it: print(match.group()) 7, split 説明: re.split メソッドは、一致する部分文字列に従って文字列を分割し、リストを返します。 構文: split(pattern, string, maxsplit=0, flags=0) maxsplit: 分割数、maxsplit=1 は 1 回分割、デフォルトは 0、 no 回数を制限します。 例: print(re.split('a', '1A1a2A3', re.I)) # ['1A1', '2A3']# 输出结果并未能区分大小写,这是因为re.split(pattern,string,maxsplit, flags)默认是四个参数,当我们传入的三个参数的时候,系统会默认re.I是第三个参数,所以就没起作用。# 如果想让这里的re.I起作用,写成flags=re.I即可。 print(re.split('a', '1A1a2A3', flags=re.I)) # ['1', '1', '2', '3'] 8、escape 説明: re.escape for string内部の特殊な文字列はエスケープされます。 文法: escape(pattern) 例: print(re.escape('www.dxy.cn')) # www\.dxy\.cn 9、正規表現 "(?P8a11bc632ea32a57b3e3693c7987c420...)": グループ化し、8a11bc632ea32a57b3e3693c7987c420 という名前を付けます。 "(?P=name)": 別名が 8a11bc632ea32a57b3e3693c7987c420 であるグループによって一致する文字列を指します。 10. 先行詞(否定)の定義の特徴 先行詞の共通定義(? (?<=aaa) # 正确 (?<=aaa|bbb) # 正确 (?<=aaa|bb) # 错误 (?<=\d+) # 错误 (?<=\d{3}) # 正确## のように固定長である必要があるためです。 #関連する推奨事項:
|
以上がPythonの正規表現でreモジュールを使用するにはどのような方法がありますか? reモジュールの使い方の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。