• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

pythonのre

date: 2023-02-21 excerpt: pythonのreの使い方

tag: pythonlibraryreregex


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")

参考

  • Match URLs using regular expressions in Python


pythonlibraryreregex Share Tweet