Python正则表达式拆分,任意长度的整数

时间:2010-01-28 21:00:28

标签: python regex

我正在尝试在Python中进行简单的正则表达式拆分。该字符串采用FooX的形式,其中Foo是一些字符串,X是任意整数。我觉得这应该很简单,但我无法让它发挥作用。

就此而言,有人可以推荐一些优秀的Regex阅读材料吗?

5 个答案:

答案 0 :(得分:5)

您不能使用split(),因为它必须消耗一些字符,但您可以使用常规匹配来执行此操作。

>>> import re
>>> r = re.compile(r'(\D+)(\d+)')
>>> r.match('abc444').groups()
('abc', '444')

答案 1 :(得分:1)

使用群组:

import re

m=re.match('^(?P<first>[A-Za-z]+)(?P<second>[0-9]+)$',"Foo9")
print m.group('first')
print m.group('second')

使用搜索:

import re

s='Foo9'
m=re.search('(?<=\D)(?=\d)',s)
first=s[:m.start()]
second=s[m.end():]

print first, second

答案 2 :(得分:1)

保持简单:

>>> import re
>>> a = "Foo1String12345"
>>> re.split(r'(\d+)$', a)[0:2]
['Foo1String', '12345']

答案 3 :(得分:0)

假设您要在“Foo”和数字之间进行分割,您需要以下内容:

r/(?<=\D)(?=\d)/

在非数字和数字之间的某个点匹配,而不会消除分割中的任何字符。

答案 4 :(得分:0)

>>> import re
>>> s="gnibbler1234"
>>> re.findall(r'(\D+)(\d+)',s)[0]
('gnibbler', '1234')

在正则表达式中,\ D表示任何非数字的内容,因此\ D +匹配一个或多个非数字的内容。

同样\ d表示任何数字,因此\ d +匹配一个或多个数字