Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何匹配字符串并忽略其后的所有内容?_Python_Regex - Fatal编程技术网

Python 如何匹配字符串并忽略其后的所有内容?

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

所以这里是交易,我想匹配一个数字和后面的字符串。就像购买清单一样,“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香蕉”和“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香蕉奶昔”。?