每当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)
我想您需要提取变量并对其求值。你知道吗
如果是这样,您不需要调用不同的函数来提取变量,只需使用括号(捕获组)来提取它。你知道吗
比如:
它将提供:
如您所见,变量已经被提取出来。你知道吗
但是如果你想匹配两个或更多的模式,它会有点复杂。你知道吗
如果使用
re.sub(r'\$(\w+)|\$\{(\w+)\}', replace, s)
,match.groups()
将是:您需要从元组中获取不是
None
的元素。你知道吗顺便说一句,我建议使用
\w
而不是.
,因为您正在使用贪婪的regex。你知道吗相关问题 更多 >
编程相关推荐