質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

382閲覧

商品を説明した文から商品番号を抜き出したい

melbo

総合スコア62

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2022/04/24 00:59

編集2022/04/24 01:21

商品説明の文から商品番号を抜き出していますが、商品説明のパターンが変わりこれまでのコードの修正が必要になったのですがどう変えたらよいかわからず質問させて頂きました。

これまでのパターンは次の通りでした。

商品説明パターン: 変数(line)に代入
'XXXTA1 XXXXXX'
'XXXXTA2 XX'
'TA3 XXXXXX'

要件:
TAで始まる空白(半角)までの文字列を抜き出したい

コード:
result=re.findall(r'TA.+?\s', line)

結果: 
['TA1 ']
['TA2']
['TA3']

商品説明の修正パターンは次のようになり、前の商品説明パターンの最後に番号が付されています。
要件はその最後に付した商品番号を取りたいのですが、これまでのコードでは最初のTAからはじまる番号が取得されてしまいます。
最後に付した商品番号を取得したいのですがどのような正規表現を書いたらよいのでしょうか?

修正後商品説明パターン:
'XXXTA1 XXXXXXTA1-001'
'XXXXXTA2 XXTA2-002'
'TA3 XXXXXXTA3-003' 
'TA4 XXXXXTA4-004在庫あり' 

要件:
商品説明の文のうち、TAから始まる最後の文字列のみ取得したい

結果:
['TA1-001']
['TA2-002']
['TA3-003']
['TA4-004'][

ご教示のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/04/24 01:10

これまでのコードとそれがどういうふうな不具合あるのかを提示しよう
melian

2022/04/24 02:06

抽出したい商品番号の書式が TA[0-9]+-[0-9]+ なのであれば、 re.findall(r'TA\d+-\d+', line) でしょう。
guest

回答1

0

ベストアンサー

そこに出てくるのが数字だけであれば、"TA[0-9]*-[0-9]*"でしょうか。

投稿2022/04/24 03:00

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melbo

2022/04/24 03:48

ありがとうございます。 問題は解決しました。 正規表現について不勉強なため教えてください。 仮に同一文の中に同じパターンがある場合、正規表現では後の方を取得するというようなことはできるのでしょうか? たとえば 'TA3-01XXXXXTA4-004在庫あり' とあった場合、ご教示頂いたコードでは['TA3-01','TA4-004']となりますが、['TA-004']のみ取得するというようなことはできるのでしょうか? これは正規表現の問題ではないような気もしますが、念のため質問させて頂きました。
otn

2022/04/25 06:56

findallで全部抜き取ってlistの最終要素を取るというのが明快です。 言語によっては、「長さ未定の後方参照」が使えるので2個目とかなら可能ですが、Pyhthonは出来ない(後方参照には*や+等が書けない)ので駄目でしょう。出来る場合でも、複雑な正規表現はプログラムの見通しが悪くなるので、正規表現の外で解決できるならその方が良いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問