在Python中使用.find查找第一个非数字字符

时间:2013-03-10 12:21:46

标签: python regex

我的字符串包含ABC 12345,但也包含ABC 98765.ABC 55555<

为了找到ABC,然后确定以下数字序列,我使用

index = page.find('ABC',index)
t1 = page.find(' ',index+1)
t2 = page.find(' ',t1+4)

这样我就会12345,但不会9876555555

如何更改第3行以查找空格和其他字符,例如.<

我试过

import re

t2 = re.search("\d", page,t1+4)

但这种语法被破坏了。

1 个答案:

答案 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']