猿问

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

我有一个这样的字符串'6\' 3" ( 190 cm )',我想'190 cm'只使用正则表达式提取。我找不到合适的模式来寻找。


我试过了


string = '6\' 3" ( 190 cm )'

pattern = re.compile(r'[^\\( 0-9+ \\)]')

pattern.findall(a)

但它返回 ["'", '"', 'c', 'm']


感谢您的帮助!


开满天机
浏览 248回答 3
3回答

皈依舞

print re.findall(r'[0-9]+ cm',string)[0]在哪里string:'6\' 3" ( 190 cm )'

隔江千里

您的表达式中有太多不需要和有害的符号。使用周围[]做findall匹配单个字符,这说明你得到的输出。这需要重新考虑:转义括号,用于\d+匹配一个或多个数字,以及显式cm和空格。创建一个组只匹配数字+单位,用于search查找组并显示它。import restring = '6\' 3" ( 190 cm )'pattern = re.compile(r'\( (\d+ cm) \)')>>> pattern.search(string).group(1)'190 cm'

MMTTMM

使用正则表达式:import res = '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
随时随地看视频慕课网APP

相关分类

Python
我要回答