我的字符串包含ABC 12345
,但也包含ABC 98765.
或ABC 55555<
为了找到ABC
,然后确定以下数字序列,我使用
index = page.find('ABC',index)
t1 = page.find(' ',index+1)
t2 = page.find(' ',t1+4)
这样我就会12345
,但不会98765
或55555
。
如何更改第3行以查找空格和其他字符,例如.
或<
?
我试过
import re
t2 = re.search("\d", page,t1+4)
但这种语法被破坏了。
答案 0 :(得分:3)
使用正则表达式查找文字文本ABC
以及可选空格后面的数字:
match = re.search(r'ABC\s*(\d+)', page)
if match:
print match.group(1)
无论数字后面是什么,这都有效:
>>> re.search(r'ABC\s*(\d+)', 'ABC 98765.').group(1)
'98765'
>>> re.search(r'ABC\s*(\d+)', 'ABC 55555<').group(1)
'55555'
如果您需要查找多个匹配项,请改用findall()
:
matches = re.findall(r'ABC\s*(\d+)', page)
,它为您提供了文字文本ABC
后面的所有数字组的列表:
>>> re.findall(r'ABC\s*(\d+)', 'Some text with ABC 98765. There is some other text too, with ABC 55555<!')
['98765', '55555']