我正在尝试获取元素名和数字作为regex的组。即使是最简单的情况,如图所示,我也不能:
>>> import re
>>> t = "Fe35C65"
>>> m = re.match("(\D*\d+\D*\d+)", t)
>>> print(m.group(1))
Fe35C65
>>> print(m.group(0))
Fe35C65
>>> print(m)
<_sre.SRE_Match object; span=(0, 7), match='Fe35C65'>
>>>
我看到的是输出
Name[0] = "Fe" Name[1]="C"
Num[0] = 35, Num[1] = 65
这里有2套,但不应该限制。但是,最初的问题是提取数据
问题是
re.match
只返回1个匹配,捕获组的数目是固定的要匹配模式的多次出现,可以使用
re.findall
和r'(\D*)(\d+)'
模式,将0+个非数字符号匹配并捕获到组1,然后将1+个数字捕获到组2:因为
re.findall
只返回捕获的文本,所以您将得到一个2元素元组的列表使用PyPi regex模块的替代解决方案
您既可以验证字符串,也可以轻松地捕获具有PyPi regex module的多对组的所有出现,如下所示:
关键是:
(?:(\D*)(\d+))+
匹配(第1组)0+非数字和(第2组)1+数字的1+次出现(提取)regex.fullmatch
要求整个字符串与模式匹配(验证).captures(n)
访问李>如果有很多,你可以用这个:
输出:
相关问题 更多 >
编程相关推荐