Python 用于字符串中名称列表的正则表达式
测试: 输出:Python 用于字符串中名称列表的正则表达式,python,regex,python-3.x,Python,Regex,Python 3.x,测试: 输出: 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:
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'
我只想要产品名称的列表。到目前为止,我已经提出了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']
你可以通过在管道符号上加入一个列表来创建它。你的正则表达式是贪婪的,这使得它从那里抓取任何它看到的东西。让它不贪婪:
reg = /(ARTIST_NAME1|ARTIST_2|ETC...)/
reg = /(ARTIST_NAME1|ARTIST_2|ETC...)/
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']