0

我正在使用 python 在一个字符串中多次模式匹配一​​个字符串。问题:

string = 'The value = 1 The value = 2 The value = 3'

我只想 grep 值,但我的输出应该是这样的:

['value = 1 value = 2 value = 3']

我正在这样做:

pattern = re.compile('[value = (\d+)]*')
values = pattern.search(string)
values.group(0)

输出:

'' 

即NULL(不匹配)

请帮助我给出正确的正则表达式来 grep 所需的输出。

4

3 回答 3

1
>>> [' '.join(re.findall(r'value = \d+', string))]
['value = 1 value = 2 value = 3']
于 2012-11-29T11:29:25.297 回答
1

您正在使用字符类分组。您应该只使用带有(.

import re

string = 'The value = 1 The value = 2 The value = 3'

pattern = re.compile(r'(value = \d+)')
pattern.findall(string)
# OUT: ['value = 1', 'value = 2', 'value = 3']
" ".join(pattern.findall(string))
# OUT: 'value = 1 value = 2 value = 3'
于 2012-11-29T11:29:48.043 回答
0

您在 RE 源代码中使用方括号 ( []) 非常奇怪。这些形成字符集。

你应该使用类似的东西:

>>> pattern = re.compile(r'([^=]+)\s*=\s*(\d+)')
>>> pattern.findall(string)
[('The value ', '1'), (' The value ', '2'), (' The value ', '3')]

注意使用findall()来获取所有匹配项,并使用分组来获取值名称。

于 2012-11-29T11:24:57.257 回答