pythonのreの使い方
概要
- デフォルトライブラリに含まれる正規表現関連のライブラリ
- prceを厳密に満たしておらず、より高機能な/python-regex/も一応ある
- リテラル文字列の前に
r
をつけると、正規表現として正しく解釈できる様になるr
はrawオプション
でバックスラッシュなどをエスケープしないという宣言になる
具体例とスニペット
改行と空白文字にマッチする正規表現
blank_pattern = r"\s+"
改行を含まずに空白にマッチする正規表現
blank_pattern = r"[ \t]+"
URLとマッチする正規表現
url_pattern = r"(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
Xのハッシュタグにマッチする正規表現
hash_tag_pattern = r"#\w+"
繰り返しの三文字以上にマッチする正規表現
import re
print(re.search(r"(.)\1{2,}", "こんにちは!!!!!!!!!!!!!!!"))
"""
<re.Match object; span=(5, 20), match='!!!!!!!!!!!!!!!'>
"""
改行までマッチする例
re.DOTALL
オプションを利用する- 通常
.
は改行を除いたすべての文字なので、改行まで含む場合、このオプションが必要
- 通常
import re
def extract_code_blocks(markdown_text):
# コードブロックの正規表現パターン
pattern = r"```(?:\w*\n)?(.*?)```"
code_blocks = re.findall(pattern, markdown_text, re.DOTALL)
return code_blocks
code_blocks = extract_code_blocks(markdown_text)
for i, code_block in enumerate(code_blocks, start=1):
print(f"コードブロック {i}:\n\t{code_block}\n")