Python文字列検索のマッチングと置換(詳細)

エラーがあり、変更中ですのでご注意ください...


Pythonでの通常の使用法の基本

通常の修飾子の使用

flag通常の修飾子を表すパラメーター内のpythonパラメーター
パターンに一致する複数の正規表現修飾子を設定する:re.I | re.M

修飾子 説明
re.I 大文字と小文字を区別しないようにする
re.L ロケールを意識したマッチングを行う
re.M 複数行のマッチング、^と$に影響します
re.S 改行を含むすべての文字に一致させます
re.U Unicode文字セットに従って文字を解析します。このフラグは\ w、\ W、\ b、\ Bに影響します。
re.X このフラグを使用すると、より柔軟なフォーマットを使用して、正規表現をより簡単に記述できます。

Pythonでの後方参照

  1. バッククォート:円記号と数字(\ N)
  2. (?<name>exp)expと一致し、テキストをnameという名前のグループにキャプチャします(?'name'exp)これは、と書くこともできます
    しかし、Pythonでは(?P<name>exp)
  • その後の使用group(1)またはgroup(name)コンテンツメタデータマッチング式の取得。

>無効な後方参照について質問があります

:後方参照には接頭辞rを付ける必要があります。そうしないと、Pythonの2進数と間違えられます。たとえば、\1実際の重要度は次のようになります。\x01


要件:単一の一致文字列

re.match() 関数

Pythonmatch()では、この文字列この正規表現始まる必要があります[文字列の先頭が正しいかどうかを確認してください]。文字列の先頭が異なる場合、一致は失敗し、を返しますnone(多くの記事が「REが文字列の先頭で一致するかどうかを確認する」と言っています)

re.search() 関数

search()これは文字列全体で部分的に一致ます[文字列にこのようなものはありますか]。search()1つの一致のみが一致することは注目に値します

re.fullmatch() 関数

fullmatch():文字列は通常の文字列と完全に一致し、文字列は通常の文字列と完全に一致します[この文字列が目的のものかどうかを確認してください]


要件:全文検索と置換文字列

re.sub() 関数

基本的に使用する必要がありますreplace()。もちろん、reモジュールについてはここで説明しているので、複雑な置換を使用する必要がありますre.sub()文字列内のすべての一致が置き換えられます。

代用
n 。:代
;

re.sub(pattern, repl, string, count=0, flags=0)

pattern:正規表現
repl:置換される文字列、関数にすることができます
string:ソース文字列
count:置換される最小回数
flag:正規表現のマッチングモード(カウントに設定しないでください。記述する必要がありますflags=xxx

正規表現修飾子-オプションのフラグ|ルーキーチュートリアル

# 将“\n3.”等换为“【3】”
oriStr = '\n3.这是第三点'
resStr = re.sub(r'\n(\d+)\.', r'\n【\1】', oriStr)
print(resStr)

[3]これが3番目のポイントです


要件:文字列に一致する全文検索

re.findall()そしてre.finditer()機能

  1. re.findall()すべての一致のリストを返すに
re.findall(pattern, string, flags=0)
pattern.findall(string[, pos[, endpos]])
import re
 
result1 = re.findall(r'\d+','runoob 123 google 456')
 
pattern = re.compile(r'\d+')   # 查找数字
result2 = pattern.findall('runoob 123 google 456')
result3 = pattern.findall('run88oob123google456', 0, 10)
 
print(result1)
print(result2)
print(result3)

出力結果:

['123'、 '456']
['123'、 '456']
['88'、 '12']

  1. re.finditer()、すべての一致のイテレータを返します
re.finditer(pattern, string, flags=0)
import re
 
it = re.finditer(r"\d+","12a32bc43jf3") 
for match in it: 
    print (match.group())

12
32
43
3


要件:一致する文字で文字列を分割する

re.split() 関数

一致した文字列を分割文字として使用し、分割文字列を含むリストを返します

re.split(pattern, string[, maxsplit=0, flags=0])
>>>import re

>>> re.split('\W+', 'runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']

>>> re.split('(\W+)', ' runoob, runoob, runoob.') # 小括号表示保留这个分隔者
['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', ''

この記事の参照先:Python3正規表現| Rookieチュートリアル

おすすめ

転載: blog.csdn.net/zsq8187/article/details/109749945