這是我的輸入文本:“您可以選擇 1、2 或 3 間臥室”
我想得到臥室的數量,所以在“臥室”之前有一個或多個數字(允許:',','-','and','&','or'和'whitespace'在數字之間)
我已經嘗試過這種模式:(1|2|3|4|5|6|,|-|\s|&|and|or){1,12}bedroom在regex101上,它作業正常。
但是我下面的 Python 代碼不起作用:
text = "you have a choice between 1, 2 or 3 bedrooms"
number_range_pattern = r"(1|2|3|4|5|6|,|-|\s|&|and|or){1,12}"
bedrooms = re.search(number_range_pattern r"bedroom", text)
if bedrooms and len(bedrooms.groups()) >= 1:
match = bedrooms.group(1) # <-- match is a whitespace
結果:match是 whitespce
我希望結果是:“1、2 或 3”
uj5u.com熱心網友回復:
這是一個有效的解決方案:
text = "you have a choice between 1, 2 or 3 bedrooms"
m = re.search(r'\d (?:,? (?:(?:and|or|&) )?\d )*', text)
if m:
print(m.group()) # 1, 2 or 3
這里的正則運算式模式可以使用一個解釋:
\d match a number
(?:
,? optional comma separator
[ ] space
(?:
(?:and|or|&) and, or, & conjunction
[ ] followed by space
)? and/or/& zero or one time
\d another number
)* zero or more times
uj5u.com熱心網友回復:
您需要列印bedrooms.group(0) 而不是bedrooms.group(1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461246.html
下一篇:正則運算式查找不在短語中的數字
