[英]How to find string with regex.compile and ignore everything what goes after that string
[英]How to match a string and ignore everything after it?
所以這是交易,我想匹配一個數字和一個后面的字符串。 像購買清單一樣,“ 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 banana”,但我希望它恰好是“ X banana”(其中X是出現1-5次的數字,如正則表達式中所示),並忽略是否包含任何內容否則,例如本例中的“冰淇淋”或“奶昔”。 另外,如果我將其放在正則表達式上,則“ $”符號不匹配任何內容。
使用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']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.