実現したいこと
python初心者です。お願いします。
正規表現の勉強をしています。
言い方はおかしいかも知れませんが、Pythonのseriesでの正規表現の記述を知りたいです。
発生している問題・分からないこと
以前、pandasのseriesでAAGGU-900X600BBの様な番号から「-」「X」の間の数字を抜き出す
記述をお聞きしましたが、私が勉強している正規表現の記述と違い戸惑っています。
該当のソースコード
df["品名"] AAGGU-900X600BB AAADG-2400X650BB AAGH-2000X620BB AAAGH-1800X600BB AAAAAAAH-2200X650BB AGH-2550X650BB AAAAAAAAKV-2550X900BB AAAAAAAKV-2245X650BB AAASLKH-2500X650### df["幅"] = df["品名"].str.extract(r'-(.+?)X') 回答をいただいて解決した方法です。
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
丁寧な回答をいただき上記の記述で解決したのですが「-(.+?)X」の部分が私の勉強不足で理解
出来ませんでした。私なりに正規表現で記述すると「(?<=-)\d+(?=X)」になると思うのですが、
私の記述ではエラーになりました。(ValueError: pattern contains no capture groups)
seriesではなく普通に書くとエラーにならないので正規表現の記述は間違えないと思っています。
(正確に動作した記述)
import re
parts_no = "AAAAAA-1700X650BB"
pattern = "(?<=-)\d+(?=X)"
res = re.search(pattern,parts_no)
print(res.group())
補足
今後も正規表現を使っていきたいので勉強や参考にできるサイト等を紹介していただけると嬉しいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー