記事ディレクトリ
エラーがあり、変更中ですのでご注意ください...
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での後方参照
- バッククォート:円記号と数字(\ N)
(?<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()
機能
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']
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チュートリアル