我正在尝试构建一个将单词mark_140000
与大于或等于140000且小于或等于150000的整数匹配的正则表达式。
因此,例如,最小值为mark_150000
,最大值为mark_139999
。值mark_150001
和"^mark_14[0-9]{4}$"
无效。
我有一个匹配140000到149999的方法:
{{1}}
我怎样才能获得包括150000的最大值?
答案 0 :(得分:5)
简单,只需创建2个案例:
"^mark_(14[0-9]{4}|150000)$"
答案 1 :(得分:2)
您的正则表达式需要考虑140000
到150000
的所有可能性
^mark_1(4\d{4})|(50{4})
答案 2 :(得分:0)
您可以编写一个小函数来检查数字部分是否在以下范围内:
import re
data = """So for example the minimum value would be mark_140000 and the maximum value would be mark_150000. The values mark_139999 and mark_150001 would be Many thanks and mark_100000000000000"""
rx = re.compile(r'mark_(\d+)')
def check(number):
number = float(number)
if 140000 <= number <= 150000:
return True
return False
matches = [match.group(0)
for match in rx.finditer(data)
if check(match.group(1))]
print(matches)
这会产生
['mark_140000', 'mark_150000']