前提・実現したいこと
Python3で正規表現を使用して以下の事を実装したいです。
1.正規表現で文字列(下の"正規表現を使用する文字列")から特定の数字列を取り出し、数字列に1を足した後に、str型にする。 #特定の数字列: .jpg以下の1~3桁の数字 2. re.search()を使用して正規表現で抜き出した特定の数字列のindexを把握する ★ 3. (1.)のものを(2.)で得られたindexに代入する
1番と3番に関しては実装できるのですが、2番が実装できません。
正規表現を使用する文字列
Re_a_img063c.jpg_1.csv Re_a_img063c.jpg_21.csv Re_a_img063c.jpg_100.csv Re_b_img065c.jpg_3.csv
#操作後に得たい文字列
操作前:Re_a_img063c.jpg_1.csv 操作後:Re_a_img063c.jpg_2.csv 操作前:Re_a_img063c.jpg_21.csv 操作後:Re_a_img063c.jpg_22.csv 操作前:Re_a_img063c.jpg_99.csv 操作後:Re_a_img063c.jpg_100.csv 操作前:Re_b_img065c.jpg_3.csv 操作後:Re_b_img065c.jpg_4.csv 操作前:Re_b_img065c.jpg_40.csv 操作後:Re_b_img065c.jpg_41.csv
発生している問題・エラーメッセージ
re.search()関数を使用してインデックスを入手しようとしたのですが、特定の数字列の部分を上手く得ることができません
import re string = "Re_a_img063c.jpg_1.csv" matchObj = re.search(r'Re_[a-zA-Z]{1,3}_img\d{0,3}c.jpg_(\d{0,3}).csv', string) if matchObj: print(matchObj.group()) # マッチした文字列: Re_a_img063c.jpg_1.csv print(matchObj.start())# マッチした文字列の開始位置: 0 print(matchObj.end()) # マッチした文字列の終了位置: 22 print(matchObj.span()) # マッチした文字列の開始位置と終了位置: (0,22)
該当のソースコード
Python3
1import re 2string = "Re_a_img063c.jpg_1.csv" 3m = re.fullmatch(r'Re_[a-zA-Z]{1,3}_img\d{0,3}c.jpg_(\d{0,3}).csv',string) 4m.group(1) 5gottenNumber=m.group(1) 6addedNumber = str(int(a)+1) 7# "2"
###試した事
以下の様なサイトを真似てみたのですが、上手くできませんでした。
https://note.nkmk.me/python-str-search/
https://uxmilk.jp/8683
補足情報(FW/ツールのバージョンなど)
直接的な解決案の回答でなくとも、参考になりそうなサイト、類似の事例を教えて頂けると幸いです。
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/02 08:44
2020/03/02 08:53 編集
2020/03/02 09:06