我有一个这样的字符串'6\' 3" ( 190 cm )',我想'190 cm'只使用正则表达式提取。我找不到合适的模式来寻找。我试过了string = '6\' 3" ( 190 cm )'pattern = re.compile(r'[^\\( 0-9+ \\)]')pattern.findall(a)但它返回 ["'", '"', 'c', 'm']感谢您的帮助!
3 回答
隔江千里
TA贡献1906条经验 获得超10个赞
您的表达式中有太多不需要和有害的符号。
使用周围[]做findall匹配单个字符,这说明你得到的输出。
这需要重新考虑:转义括号,用于\d+匹配一个或多个数字,以及显式cm和空格。
创建一个组只匹配数字+单位,用于search查找组并显示它。
import re
string = '6\' 3" ( 190 cm )'
pattern = re.compile(r'\( (\d+ cm) \)')
>>> pattern.search(string).group(1)
'190 cm'
MMTTMM
TA贡献1869条经验 获得超4个赞
使用正则表达式:
import re
s = '6\' 3" ( 190 cm )'
desired_output = re.search(r'\((.*?)\)',s).group(1).lstrip()
print(desired_output)
>>> 190 cm
没有正则表达式:
s = '6\' 3" ( 190 cm )'
desired_output = s[s.find("(")+1:s.find(")")].lstrip()
print(desired_output)
>>> 190 cm
添加回答
举报
0/150
提交
取消