テスト:
1. 'Product: aab bbc; Product: xyz pqr; Junk1: jjkk jjuu; Junk2: nnnkk junk; Junk3: lkie rnier rae'
2. 'Product: Fuasdcsen'
3. 'Product: marlwaw Swwō'
4. 'Product: aab bbc abc xyz; Product: xyz pqr; Junk1: jjkk jjuu; Junk2: nnnkk junk; Junk3: lkie rnier rae'
出力:
1. ['aab bbc', 'xyz pqr']
2. ['Fuasdcsen']
3. ['marlwaw Swwō']
4. ['aab bbc abc xyz', 'xyz pqr']
商品名のみのリストが欲しいのですが。これまでのところ、r'Product:\ s *(。*)(?:; | $) 'この正規表現を思いついたが、単一の製品(ケース2および3)でのみ機能する。誰かがすべての一般的な解決策を提案できますか?:と;(存在する場合)の間の詳細を抽出しようとしています。
In [10]: reg_str = 'Product: marlwaw Swwō xyz abc'
In [11]: re.findall(r'Product:\s*(.*)(?:;|$)', reg_str)
Out[11]: ['marlwaw Swwō xyz abc']
あなたの正規表現は貪欲であり、それはそれがそこから見るものは何でもつかむようにします。欲張りでないものにする:
import re
reg_str = 'Product: aab bbc; Product: xyz pqr; Junk1: jjkk jjuu; Junk2: nnnkk junk; Junk3: lkie rnier rae'
print(re.findall(r'Product:\s*(.*?)(?:;|$)', reg_str))
# ['aab bbc', 'xyz pqr']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加