我正在尝试在Python中进行简单的正则表达式拆分。该字符串采用FooX的形式,其中Foo是一些字符串,X是任意整数。我觉得这应该很简单,但我无法让它发挥作用。
就此而言,有人可以推荐一些优秀的Regex阅读材料吗?
答案 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 +匹配一个或多个数字