Python 如何匹配字符串并忽略其后的所有内容?
所以这里是交易,我想匹配一个数字和后面的字符串。就像购买清单一样,“10个香蕉”或“15个苹果”。问题是,同一个正则表达式必须匹配“10香蕉”,但不能匹配“10香蕉奶昔” 我已经尝试过的正则表达式:Python 如何匹配字符串并忽略其后的所有内容?,python,regex,Python,Regex,所以这里是交易,我想匹配一个数字和后面的字符串。就像购买清单一样,“10个香蕉”或“15个苹果”。问题是,同一个正则表达式必须匹配“10香蕉”,但不能匹配“10香蕉奶昔” 我已经尝试过的正则表达式: r"\b[0-9]{1,5}.banana" r"\b[0-9]{1,5}.banana\b" r"\b[0-9]{1,5}.banana$" 例如: 8 banana 3 banana ice cream 2 banana milkshake 5 banana 根据这个字符串,我只需要匹配“8
r"\b[0-9]{1,5}.banana"
r"\b[0-9]{1,5}.banana\b"
r"\b[0-9]{1,5}.banana$"
例如:
8 banana 3 banana ice cream 2 banana milkshake 5 banana
根据这个字符串,我只需要匹配“8香蕉”和“5香蕉”
对于我尝试过的正则表达式,它与预期的“X香蕉”匹配,但我希望它完全是“X香蕉”(其中X是一个出现1-5次的数字,就像在正则表达式中一样),并且忽略它后面是否有其他内容,如本例中的“冰淇淋”或“奶昔”。另外,如果我将“$”符号放在正则表达式上,则它与任何内容都不匹配。使用
re.findall
对于下面的lookahead正则表达式,它必须以数字或字符串结尾跟随<代码>s?在香蕉后面,以匹配复数香蕉
import re
s = '8 banana 3 banana ice cream 2 banana milkshake 5 banana'
match = re.findall(r'\b[0-9]{1,5}.bananas?(?=\s?\d+|$)', s)
# ['8 banana', '5 banana']
将
re.findall
与下面的lookahead regex一起使用,它必须以数字或字符串结尾跟随<代码>s?在香蕉后面,以匹配复数香蕉
import re
s = '8 banana 3 banana ice cream 2 banana milkshake 5 banana'
match = re.findall(r'\b[0-9]{1,5}.bananas?(?=\s?\d+|$)', s)
# ['8 banana', '5 banana']
对不起,这不清楚。有了这些输入,你到底想匹配什么?@DanielRoseman我编辑了原始帖子,希望它更清晰。我需要匹配,例如,“10香蕉”,但不匹配“10香蕉奶昔”。@WiktorStribiżew这就是问题所在,它完全匹配我想要的“香蕉”一词,但我只需要匹配“X香蕉”,而不匹配“X香蕉奶昔”。对不起,这不清楚。有了这些输入,你到底想匹配什么?@DanielRoseman我编辑了原始帖子,希望它更清晰。我需要匹配,例如,“10香蕉”,但不匹配“10香蕉奶昔”。@WiktorStribiżew这就是问题所在,它完全匹配我想要的“香蕉”一词,但我只需要匹配“X香蕉”,而不匹配“X香蕉奶昔”。?