pythonで正規表現を用いて、特定の文字に囲まれた部分を抽出しようとしています。
具体的には ABとYZで挟まれた文字列を取得しようと正規表現を書きました。
文字列が"ABCDEYZ"のときは、想定通りの"CDE"が取得できましたが
文字列が"ABCDEYZ1234YZ"と、「囲む文字」の終わりにあたる文字が2つあると
求めたい部分より長く"CDEYZ1234"と抽出されました。
確かに“ABとYZで挟まれた文字列”ですが、前から調べて、最初に"YZ"が現れた時点で
『囲まれている文字列』と判断させるにはどうすればいいのでしょうか。
下記の方法では考えているようには取得できなかったので、最初に"AB"と"YZ"が現れる位置を
取得して、インデックス指定で文字を切り出しています。
実現したいことはできましたが、正規表現の勉強のために学んでおきたいと思い質問しました。
import re origin_str = "ABCDEYZ" # ABとYZで挟まれた文字列を取得する new_str = re.search(r'AB(.+)YZ',origin_str).group(1) print(new_str) origin_str = "ABCDEYZ1234YZ" # ABとYZで挟まれた文字列を取得する new_str = re.search(r'AB(.+)YZ',origin_str).group(1) print(new_str)
実行結果
root@DESKTOP:/mnt/c/Users/hoge# python3 test_re.py CDE CDEYZ1234

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/13 14:21