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

我试过了

string = '6\' 3" ( 190 cm )'
pattern = re.compile(r'[^\\( 0-9+ \\)]')
pattern.findall(a)

但它返回
[“'“, '“', '厘米']

感谢您的帮助!

最佳答案

您的表达式中有太多不需要和有害的符号。

使用周围的 [] 使 findall 匹配单个字符,这解释了您得到的输出。

这需要重新考虑:转义括号,使用 \d+ 匹配一个或多个数字,以及显式的 cm 和空格。

创建一个仅匹配数字+单位的组,使用 search 查找组并显示它。

import re
string = '6\' 3" ( 190 cm )'
pattern = re.compile(r'\( (\d+ cm) \)')

>>> pattern.search(string).group(1)
'190 cm'

关于Python 使用正则表达式捕获字符串中的特定模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54957916/

10-12 18:24