刚开始学习python和正则表达式。
My regex:
\b\d+\s+([A-Za-z]* |[A-Za-z]*\s+[A-Za-z]*)\s+\D+..
字符串1: https://i.imgur.com/XNuXftW.jpg(为什么啤酒有空格而胡萝卜/巧克力没有?)
string 2 https://i.imgur.com/nrl2FPB.jpg(在捕获组中添加更多的\ s + [A-Za-z]似乎不再起作用了,为什么?)
字符串3 :https://i.imgur.com/qH0Z7Hi.jpg(与字符串2问题相同)
我的问题是我如何继续制定包含上述条件的内容?谢谢
如果您需要自己测试,我提供了如下字符串。
=
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用此正则表达式,它利用了后视(?<=
)和前瞻(?=
),因此它只捕获产品名称:
(?<=\s\s)\w+(?:\s\w+)*(?=\s\s)
请参阅regex101.com上的演示。
将其与g
修饰符一起使用。
答案 2 :(得分:1)
我猜之前的空间&#34; |&#34;是导致它捕获&#34;啤酒&#34;在 string 1 case &#34;巧克力蛋糕&#34;不会发生&#34;啤酒&#34;因为它与第二个正则表达式相匹配
[A-Za-z]*\s+[A-Za-z]*
string 2 [A-ZA-Z] \ S + [A-ZA-Z] 正则表达式恰好匹配两个单词
如何尝试下面的正则表达式,从trincot修改
(?<=\s\s)(\w+\s)+(\w+)(?=\s\s)