ホームページ >バックエンド開発 >Python チュートリアル >Pythonの正規表現reモジュールの一般的なメソッド
文法 | 意味 | 説明 |
"." | 任意の文字 | |
"^" | 文字列の先頭 | '^hello' は 'helloworld' に一致しますが、'aaaahellobbbb' |
"$" | 文字列の終わり | 同上 |
"*" |
0 文字以上 (貪欲一致) |
<*>一致 |
"+" |
1 つ以上の文字 (貪欲一致) |
同上 |
「?」 |
0 文字以上 (貪欲一致) |
同上 |
*?,+?,?? |
上記 3 つの最初の一致結果を取得します (非貪欲一致) |
<*>は |
{m,n} |
前の文字を m ~ n 回繰り返す場合、{m} は | にすることもできます。
a{6} は 6 a に一致し、a{2,4} は 2 ~ 4 a |
{m,n}? |
前の文字に対して m ~ n 回繰り返し、できるだけ少なくします |
「ああああああ」 ({2,4})只会匹配2个 |
"\\" |
特殊字符转义或者特殊序列 | |
[] |
表示一个字符集 | [0-9]、[a-z]、[A-Z]、[^0] |
"|" |
或 | A|B,或运算 |
(...) |
匹配括号中任意表达式 | |
(?#...) |
注释,可忽略 | |
(?=...) |
Matches if ... matches next, but doesn't consume the string. |
'(?=test)' 在hellotest中匹配hello |
(?!...) |
Matches if ... doesn't match next. |
'(?!=test)' 若hello后面不为test,匹配hello |
(?<=...) |
Matches if preceded by ... (must be fixed length). |
'(?<=hello)test' 在hellotest中匹配test |
(? |
Matches if not preceded by ... (must be fixed length). |
'(?test' 在hellotest中不匹配test |
特殊序列符号 |
意义 |
\A |
只在字符串开始进行匹配 |
\Z |
只在字符串结尾进行匹配 |
\b |
匹配位于开始或结尾的空字符串 |
\B |
匹配不位于开始或结尾的空字符串 |
\d |
相当于[0-9] |
\D |
相当于[^0-9] |
\s |
匹配任意空白字符:[\t\n\r\r\v] |
\S |
匹配任意非空白字符:[^\t\n\r\r\v] |
\w |
匹配任意数字和字母:[a-zA-Z0-9] |
\W |
匹配任意非数字和字母:[^a-zA-Z0-9] |
3.reの主な機能
一般的に使用される関数は次のとおりです: コンパイル、検索、一致、分割、findall (finditer)、sub (subn)
compile
re.compile(pattern[, flags])
関数: 通常の変換式の構文は正規表現オブジェクトに変換されます。
フラグ定義には以下が含まれます。
re.I: 大文字と小文字を無視します。
re.L: 特殊文字セットを表します。 w、W、b、B、s、S は次のものに依存します。現在の環境
re.M: 複数行モード
re.S: '.' および改行を含む任意の文字 (注: '.' には改行は含まれません)
re.U: 特殊文字を意味しますセット w、W、b、B、d、D、s、S は Unicode 文字属性データベースに依存します
search
re.search(pattern, string[, flags])
search (string[, pos[, endpos]])
関数: 文字列内の一致する正規表現パターンを検索します。位置、 MatchObject のインスタンス。一致する位置が見つからない場合は None。
match
re.match(pattern, string[, flags])
match(string[, pos[, endpos]])
関数: match() 関数は先頭でのみ機能します。文字列 正規表現との一致を試みます。つまり、位置 0 から始まる一致のみが報告されますが、search() 関数は文字列全体をスキャンして一致を見つけます。一致する文字列全体を検索する場合は、search() を使用する必要があります。
ここにいくつかの例があります:
例: 最も基本的な使用法、re.RegexObject オブジェクトを通じて
説明: r は生を意味します。表現文字列にはキャリッジ リターン 'n' などのエスケープ文字が含まれているためです。テーブルを表す場合は、「\」として記述する必要があります。しかし、単に ''+'n' を表現する必要がある場合は、r を使用せずに '\n' と書きます。ただし、r モードを使用すると、r'n' としてより明確になります。
例: Set flag
re.split(pattern, string[, maxsplit=0, flags=0])
split(string[, maxsplit=0])
機能: 文字列を正規表現に一致させることができます式の一部を分割してリストを返します
例: ip の単純な分析
re.findall(pattern, string[, flags])
findall(string[, pos[, endpos]])
関数: 文字列内の正規表現と一致するパターンを検索しますすべての部分文字列がリストに結合されて
が返されます。 例: [] に含まれるコンテンツを検索します (貪欲検索および非貪欲検索)
re.finditer(pattern, string[, flags])
finditer(string[, pos[, endpos]])
説明: findall と同様に、文字列内の正規表現を検索します。 すべての部分文字列式と一致するものはイテレータとして返されます。同様に RegexObject には次のものがあります:
re.sub(pattern, repl, string[, count, flags])
sub(repl, string[, count=0])
説明: 文字列 string All 内で一致を検索します。正規表現パターンの部分文字列は別の文字列 repl に置き換えられます。パターンに一致する文字列が見つからない場合は、変更されていない文字列が返されます。 Repl には文字列または関数を指定できます。
例:
subn
re.subn(pattern, repl, string[, count, flags])
subn(repl, string[, count=0])
注: この関数の機能は sub() と同じですが、新しい文字列と置換の数も返します。同様に RegexObject には次のものがあります: