正規表現
- re: 正規表現モジュール
公式サイト:
re – 正規表現操作 | Python 3.x ドキュメント [公式]
使い方
ドキュメント:
正規表現 How To | Python 3.x ドキュメント [公式]
参考:
match / search / sub – 正規表現モジュール re の使い方 | note.nkmk.me
マッチオブジェクト
メソッド
expand
group
__getitem__
groups
groupdict
start
end
span
プロパティ
pos
endpos
lastindex
lastgroup
re
string
ドキュメント:
マッチオブジェクト | Python 3.x ドキュメント [公式]
参考:
正規表現マッチオブジェクトでマッチした文字列や位置を取得 | note.nkmk.me
グループ
後方参照
- 番号指定参照:
(.*)
→\1
、\2
、… - 名前付きグループ:
(?P<group>.*)
→\g<group>
ドキュメント:
Match.groups | Python 3.x ドキュメント [公式]
Match.groupdict | Python 3.x ドキュメント [公式]
Match.lastindex | Python 3.x ドキュメント [公式]
参考:
正規表現を利用して任意の文字列群を抽出する/名前付きグループを利用する – Qiita
正規表現マッチオブジェクトでマッチした文字列や位置を取得 | note.nkmk.me
re モジュールを使って後方参照をしてみよう! | QlN’s QualificatioN’s
re.sub / replace / regexp – 文字列の置換/単純置換/正規表現置換 | Python Snippets
Handling backreferences to capturing groups in re.sub replacement pattern – Stack Overflow
How to get group name of match regular expression? – Stack Overflow
エスケープ (re.escape)
参考:
attaching raw to string variables – Stack Overflow
match と search の違い
match
: 文字列の先頭から正規表現による検索を行い、合致した部分についてマッチオブジェクトを返す/合致しなかった場合はNone
を返すsearch
: 文字列の任意の部分で正規表現による検索を行い、合致した部分についてマッチオブジェクトを返す/合致しなかった場合はNone
を返す
match
は先頭からのみ検索を行う。任意の部分で正規表現による検索を行いたい場合は search
を用いる。
ドキュメント:
search vs. match | Python 3.x ドキュメント [公式]
re.match | Python 3.x ドキュメント [公式]
re.search | Python 3.x ドキュメント [公式]
参考:
match ではなくて search を使う時 | Python 入門
re.match より re.search を使おう – Qiita
What is the difference between re.search and re.match? – Stack Overflow
先読み/後読み
(?=pattern)
: 先読み(?!pattern)
: 否定先読み(?<=string)
: 後読み(?<!string)
: 否定後読み
参考:
置換
- str.replace: 文字列を指定回数だけ置換する。(デフォルト:無制限)
- re.sub: 正規表現に合致した部分を置換する。
- re.subn: 正規表現に合致した部分を置換し、置換した回数を含めて返す。
ドキュメント:
re.sub | Python 3.x ドキュメント [公式]
re.subn | Python 3.x ドキュメント [公式]
str.replace | Python 3.x ドキュメント [公式]
参考:
replace / translate / re.sub / re.subn – 文字列を置換 | note.nkmk.me
replace / re.sub – 文字列を置換する | UX MILK
正規表現による置換でマッチした文字列に応じて置換する文字列を変化させる – Qiita
sub / subn – 正規表現にマッチした文字列を新しい文字列に置換する | JavaDrive
string.replace regular expression – Stack Overflow
パターンをコンパイルする (re.compile)
ドキュメント:
re.compile | Python 3.x ドキュメント [公式]
合致する部分を全て列挙する (re.findall)
ドキュメント:
re.findall | Python 3.x Documentation [Official]
参考:
re.findall 関数と正規表現を使って文字列から部分文字列を抽出するには | @IT
How can I find all matches to a regular expression in Python? – Stack Overflow
リストの文字列との合致を判定する
参考:
How to match any string from a list of strings in regular expressions? – Stack Overflow
If any strings in a list match regex – Stack Overflow
日本語を扱う
参考:
正規表現で漢字/ひらがな/カタカナ/英数字を判定/抽出/カウント | note.nkmk.me
Unicode プロパティを使いたい
参考:
正規表現での漢字マッチを Unicode プロパティーを使って綺麗に書く方法 – Qiita
regex matching Unicode properties – Stack Overflow
まとめ/Tips
regex
入手:
リポジトリ:
mrabarnett/mrab-regex – GitHub
Oniguruma CFFI
入手:
リポジトリ:
asottile/onigurumacffi: CFII Bindings for Oniguruma Regex Engine – GitHub