如果字符串以 n 位数字开头且没有更多则匹配
Match if string starts with n digits and no more
我有像 6202_52_55_1959.txt
这样的字符串
我想匹配以 3 位数字开头的数字。
所以 6202_52_55_1959.txt
不应该匹配,但 620_52_55_1959.txt
应该匹配。
import re
regexp = re.compile(r'^\d{3}')
file = r'6202_52_55_1959.txt'
print(regexp.search(file))
<re.Match object; span=(0, 3), match='620'> #I dont want this example to match
如果只有三位数字且后面没有更多数字,我怎样才能让它匹配?
使用模式 ^\d{3}(?=\D)
:
inp = ["6202_52_55_1959.txt", "620_52_55_1959.txt"]
for i in inp:
if re.search(r'^\d{3}(?=\D)', i):
print("MATCH: " + i)
else:
print("NO MATCH: " + i)
这会打印:
NO MATCH: 6202_52_55_1959.txt
MATCH: 620_52_55_1959.txt
此处使用的正则表达式匹配:
^ from the start of the string
\d{3} 3 digits
(?=\D) then assert that what follows is NOT a digit (includes end of string)
regexp = re.compile(r'^\d{3}(?!\d)')
我有像 6202_52_55_1959.txt
我想匹配以 3 位数字开头的数字。
所以 6202_52_55_1959.txt
不应该匹配,但 620_52_55_1959.txt
应该匹配。
import re
regexp = re.compile(r'^\d{3}')
file = r'6202_52_55_1959.txt'
print(regexp.search(file))
<re.Match object; span=(0, 3), match='620'> #I dont want this example to match
如果只有三位数字且后面没有更多数字,我怎样才能让它匹配?
使用模式 ^\d{3}(?=\D)
:
inp = ["6202_52_55_1959.txt", "620_52_55_1959.txt"]
for i in inp:
if re.search(r'^\d{3}(?=\D)', i):
print("MATCH: " + i)
else:
print("NO MATCH: " + i)
这会打印:
NO MATCH: 6202_52_55_1959.txt
MATCH: 620_52_55_1959.txt
此处使用的正则表达式匹配:
^ from the start of the string
\d{3} 3 digits
(?=\D) then assert that what follows is NOT a digit (includes end of string)
regexp = re.compile(r'^\d{3}(?!\d)')