提供输入“inputString”,可以采用“0/1”,“0/1/2”,...(或由“/”分隔的至少两个数字的任何其他组合),我写了跟随提取数字的基于正则表达式的表达式:
match = re.search("(\d)+/*", inputString)
为了列出最后两位数字,我使用了
match.groups()[-1], match.groups()[-2]
然而,输入“0/1”时,我只得到“0”。我如何使用正则表达式的特定重复子字符串(在我的情况下是一个数字)。当然,.split('/')
是另一种选择,但我对正则表达式感兴趣。
答案 0 :(得分:0)
您需要使用re.findall
代替re.search
re.search
仅检查字符串中任何位置的单个匹配。
答案 1 :(得分:0)
使用$
将搜索锚定到该行的末尾。
import re
for text in ('0', '0/1', '0/1/2', 'foo', '0/1/2/3', 'bar'):
m = re.search(r'(\d)/(\d)$', text)
if m:
print(m.groups())
else:
print('no match for:', text)
给你:
no match for: 0
('0', '1')
('1', '2')
no match for: foo
('2', '3')
no match for: bar
但是,在一天结束时,你最有可能做得更好:
try:
g1, g2 = text.rsplit('/', 2)
except ValueError:
pass # do something appropriate