我需要帮助用正则表达式获取某些数字。 由于我不太了解正则表达式,我只能设法看出前两个字符是否与95 - 99匹配。^([0-9] [5-9] {4})
我有数字00000到99999。
我想排除所有以95及以上开头的数字。
所以00000 - 94999没问题,95000 - 99999不行。
答案 0 :(得分:1)
您可以匹配数字范围00000 - 94999,包括您可能会尝试的前导零:
^
从字符串的开头(?=\d{5}$)
从一个积极的先行开始,确保数字不超过5位,直到字符串结尾0*
预先添加零个或多个零(?:9[0-4][0-9]{3}|[1-8][0-9]{4}|[1-9][0-9]{1,3}|[0-9])
匹配数字范围$
字符串的结尾你的正则表达式可能如下:
^(?=\d{5}$)0*(?:9[0-4][0-9]{3}|[1-8][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$
答案 1 :(得分:0)
正则表达式用于验证字符串是否与设置模式匹配。它不是用于比较数字以查看它们是否在范围内。将文本(如果这是您开始的)转换为数字,然后在if语句中使用比较运算符。
答案 2 :(得分:0)
从可读性和性能角度来看,正则表达不太适合执行数字比较。提取数字并在之后进行数字比较会更加明智。
你没有提到过一种语言,所以我将用Python3进行演示。
# input data
lines = [
"my line #1 :94995: message #1",
"my line #2 :95005: message #2"
]
for i, line in enumerate(x):
# extract a 5-digit number wrapped in colons
match = re.search(':([0-9]{5}):', line)
if match is None:
continue
# convert to a number, and verify
num = int(match.group(1))
if num >= 95000:
continue
# print any lines that meet our criteria
print("line %d meets our criteria! (%d)" % ( i, num ))
将输出:
line 0 meets our criteria! (94995)