#reモジュール基礎知識
毎回調べるのでこの際まとめました。
matchとsearchの違い
- match
文字列の先頭から一致するものだけ - search
途中から一致するものも対象(こっちの方がよく使う)
subとreplaceの違い
subはreモジュールの一部、replaceはpythonの文字列変換の基本機能
sub
正規表現で置換する際に使用
re.sub("置換対象の文字列(正規表現)","置換後の文字列",置換対象のstr変数)
Moji="abc"
Henkan=re.sub("[ab]","d",Moji)
>>> Henkan
'ddc'
replace
置換対象のstr変数.replace("置換対象の文字列(正規表現)","置換後の文字列")
Moji = "Python"
Henkan = Moji.replace("P","p")
>>> Henkan
'python'
正規表現基礎知識
正規表現 | 意味 |
---|---|
\w | 英数字 |
[a-zA-Z] | 英字* |
\d | 数字 |
\D | 非英数字 |
*pythonでは\lを使った英字のみの正規表現は使えないっぽい |
正規表現繰り返し
*
(前の文字の0回以上繰り返し)
pattern = "a*"
matchするもの
= "", "a", "aaaaaaa"
+
(前の文字の0回以上繰り返し)
pattern = "a+"
matchするもの
= "a", "aaaaaaa"
{m}
(前の文字のm回繰り返し)
pattern = "a{4}"
matchするもの
= "aaaa"
{m,n}
(前の文字のm~n回繰り返し)
pattern = "a{2,4}"
matchするもの
= "aa","aaa","aaaa"
patternとgroup1
pattern: 抜き出したい英数字を正規表現で含む文字列
group(0): マッチした文章まるごと
group(n): n番目にマッチしたグループ(複数グループがある場合のみ)
message = "I have 20 dogs and 30 cats."
pattern = "I have (\d+) dogs and (\d+) cats."
match = re.search(pattern,message)
>>> match.group(0)
'I have 20 dogs and 30 cats.'
>>> match.group(1)
'20'
>>> match.group(2)
'30'
patternとgroup2
match = re.search('(?<=この文字列以降から抽出)欲しい部分を正規表現で指定',検索対象の文字列)
例)大根の値段のみを抽出したい
match = re.search('(?<=daikon )\d+','daikon 100yen')
price = match.group(0)
>>> price
100