簡體   English   中英

如何匹配字符串並忽略之后的所有內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM