目前我有一个字符串,我想提取括号的内容。 这是字符串:
>>>string = "djdjfksjlfsdk (600m 36.57) fhksjhfhsdhfkjhks"
这是我正在使用的正则表达式,它产生以下结果:
>>>regex_output = re.findall(r'\((\d{3,4})m|([\d.:]+\d)\)',string)
>>>regex_output
[('600', ''), ('', '36.57')]
据我所知,空字符串是由我的正则表达式中的嵌套捕获组引起的。 我想要的是两个变量的列表:
['600','36.57']
我可以从我当前的输出中创建新列表,但这会破坏使用正则表达式的目的。那么有没有办法通过修改我的正则表达式来实现我想要的输出。感谢
答案 0 :(得分:1)
>>> import re
>>> s = "djdjfksjlfsdk (600m 36.57) fhksjhfhsdhfkjhks"
您可以搜索封闭的(
和)
>>> re.search('\((.*?)\)',s).group(1)
'600m 36.57'
然后拆分'm '
个字符
>>> re.search('\((.*?)\)',s).group(1).split('m ')
['600', '36.57']
答案 1 :(得分:0)
你也可以尝试下面的代码,它使用正面后卫来匹配(
之后的数字,并且它使用前瞻来匹配之前的{十进制数)
,
>>> import re
>>> s = "djdjfksjlfsdk (600m 36.57) fhksjhfhsdhfkjhks"
>>> m = re.findall(r'(?<=\()\d+|\d+[.:]\d+(?=\))', s, re.M)
>>> m
['600', '36.57']