调用替换函数Regex Python

2024-04-19 00:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

每当regex表达式在字符串myString中匹配时,我就使用下面的代码调用replace函数。我的问题是,是否可以根据regex是否与${STRING}$STRING匹配来调用不同的replace函数

def replace(match):
    match = match.group()

    if matched == ${STRING}
        return os.getenv(match[1:],'') 
    elif matched == $STRING:
        return something else
    else:
        return error

def main()
    myString = "my string ${withcool} $stuff"
    re.sub("\$.+|\$\{.+\}",replace,myString)

Tags: 函数字符串代码stringreturnif表达式def
1条回答
网友
1楼 · 发布于 2024-04-19 00:45:51

我想您需要提取变量并对其求值。你知道吗

如果是这样,您不需要调用不同的函数来提取变量,只需使用括号(捕获组)来提取它。你知道吗

比如:

def replace(match):
    print match.groups()
s='my string ${withcool} ${withcool2} $stuff'
re.sub(r'\$\{(\w+)\}', replace, s)

它将提供:

('withcool',)
('withcool2',)

如您所见,变量已经被提取出来。你知道吗

但是如果你想匹配两个或更多的模式,它会有点复杂。你知道吗

如果使用re.sub(r'\$(\w+)|\$\{(\w+)\}', replace, s)match.groups()将是:

(None, 'withcool')
(None, 'withcool2')
('stuff', None)

您需要从元组中获取不是None的元素。你知道吗

顺便说一句,我建议使用\w而不是.,因为您正在使用贪婪的regex。你知道吗

相关问题 更多 >