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

4 投票
5 回答
2305 浏览
提问于 2025-04-15 18:36

我想在Python中做一个简单的正则表达式分割。这个字符串的格式是FooX,其中Foo是任意字符串,X是一个随意的整数。我觉得这应该很简单,但我就是搞不定。

顺便问一下,有人能推荐一些好的正则表达式学习资料吗?

5 个回答

1

保持简单:

>>> import re
>>> a = "Foo1String12345"
>>> re.split(r'(\d+)$', a)[0:2]
['Foo1String', '12345']
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
6

你不能使用 split() 方法,因为它需要消耗一些字符,但你可以用普通的匹配方式来实现这个功能。

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

撰写回答