#正規表現まとめ
Pythonでの文字列検索で正規表現を使いました。何度も調べていたのでまとめ。(自分用です)
##正規表現
記号 | 意味 | 例 | 解説 |
---|---|---|---|
^ | 行頭 | ^A | 1文字目がAである |
^ | 文字クラス内で使用すると否定 | [^0-3] | 0123以外 |
$ | 行末 | $A | 最後の文字がAである |
. | 任意の1文字 | ^.A | 2文字目がAである |
* | 0回以上の繰り返し | [01]* | - |
+ | 1回以上の繰り返し | [01]+ | - |
? | 0または1回の繰り返し | [01]? | - |
{n} | n回の繰り返し | [01]{n} | nは数値 |
{n,} | n回以上の繰り返し | [01]{n,} | nは数値 |
{n,m} | n回からm回の繰り返し | [01]{n,m} | nは数値 |
\ | メタ文字のエスケープ | \. | 「.」を意味する |
##これらを使用して文字列の検索をしてみる。
reモジュールをインポート
inport re
2文字目がAであるか確認します。
ptr="^.A"
com_ptr=re.compile(ptr) #検索パターンの文字列をコンパイルする
res=com_ptr.search("AABC") #"AABC"の2文字目がAであるか検索
if res==None: #searchは文字列が存在しない場合の戻り値がNone
print("2文字目はAではありません")
else:
print("2文字目はAです")
##検索に使用するメソッドまとめ
検索するパターンcom_ptrが"B"、検索対象文字列value_strが"ABCDEFG"とした場合
メソッド | 内容 | 戻り値 |
---|---|---|
com_ptr.search(value_str,開始位置,終了位置) | 最も長いパターン文字列の位置を返す | <_sre.SRE_Match object; span=(1, 2), match='B'> |
com_ptr.match(value_str,開始位置,終了位置) | 先頭部分のみ検索 | この例では1文字目がAではないのでNone |
com_ptr.sub(置換後文字列,value_str) | - | - |
以上です。
まだ使いこなせていないので、間違っている部分があれば教えて下さい。