3

を含む文字列がありますがABC 12345ABC 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)

しかし、この構文は壊れています。

4

1 に答える 1

6

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']
于 2013-03-10T12:24:52.853 に答える