为了账号安全,请及时绑定邮箱和手机立即绑定

Python 使用正则表达式捕获字符串中的特定模式

Python 使用正则表达式捕获字符串中的特定模式

开满天机 2021-11-23 20:21:00
我有一个这样的字符串'6\' 3" ( 190 cm )',我想'190 cm'只使用正则表达式提取。我找不到合适的模式来寻找。我试过了string = '6\' 3" ( 190 cm )'pattern = re.compile(r'[^\\( 0-9+ \\)]')pattern.findall(a)但它返回 ["'", '"', 'c', 'm']感谢您的帮助!
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

print re.findall(r'[0-9]+ cm',string)[0]

在哪里string

'6\' 3" ( 190 cm )'


查看完整回答
反对 回复 2021-11-23
?
隔江千里

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'


查看完整回答
反对 回复 2021-11-23
?
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


查看完整回答
反对 回复 2021-11-23
  • 3 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信