我有几个不同的模块,它们具有类似的regex表达式
在模块A中,我有:
string_to_find = rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,|))'
string_to_replace = r'14325'
在模块B中,我有:
string_to_find = rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,s?)(.+?)(,|))'
string_to_replace = r'1634527'
我想将所有这些表达式收集到一个元组((..,..),(..,..))
中,该元组由模块C:中的函数C返回
def get_regex_expressions():
regex_expressions = ((rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,|))', r'14325'),(rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,s?)(.+?)(,|))', r'1634527'))
return regex_expressions
问题是,其中一些是f-string,而在模块A和B中定义的"variable_name"在模块C中没有定义。例如,在模块A中,我希望能够运行t = get_regex_expressions()
,然后将第一个元组中的第二个表达式t[0][1]
传递到re.sub
命令中。如何调整regex_expressions,以便将它们存储在不同模块的元组中?我试着把整个表达式用双引号括起来&";。这消除了错误,但现在我不确定它是否会被视为一个正确的f字符串。
首先,将f-string表达式放在另一组引号中并不能满足您的需要。
其次,在我看来,你的问题是XY问题的一个例子。我们需要更多地了解";你想要实现的目标;而不是";你想如何实现它";。无论哪种方式,我都会根据你提供的线索尽可能地回答。
您是否考虑过使用带参数的函数,然后这些参数可以用来构造正则表达式?大致如下:
def get_regex_expressions(variable_name):
regex_expressions = ((rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,|))', r'14325'),(rf'([^_A-z]{variable_name}()(.+?)(,s?)(.+?)(,s?)(.+?)(,|))', r'1634527'))
return regex_expressions
然后,您可以在从模块C导入上述函数的同时传递A或B中存在的变量(假设这是您想要的结构(。