创建一个 returns 正则表达式元组的函数
create a function that returns a tuple of regex expressions
我有几个具有相似正则表达式的不同模块。
在模块 A 中,我有:
string_to_find = rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))'
string_to_replace = r''
在模块 B 中,我有:
string_to_find = rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))'
string_to_replace = r''
我想将所有这些表达式收集到一个元组 ((..,..),(..,..))
中,该元组由模块 C 中的函数 C 返回:
def get_regex_expressions():
regex_expressions = ((rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))', r''),(rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))', r''))
return regex_expressions
问题是它们中的一些是 f-strings,而 'variable_name',虽然在模块 A 和 B 中定义,但在模块 C 中没有定义。例如,在模块 A 中,我想成为能够 运行 t = get_regex_expressions()
然后将第一个元组中的第二个表达式 t[0][1]
传递到 re.sub
命令中。如何调整 regex_expressions 以便它们可以存储在不同模块的元组中?我尝试将整个表达式放在双引号“”中。这消除了错误,但现在我不确定它是否会被视为正确的 f 字符串。
首先,将 f 字符串表达式放在另一组引号中不会满足您的需求。
其次,我觉得你的问题是XY problem的一个例子。我们需要更多地了解“你想实现什么”,而不是“你想如何实现它”。无论哪种方式,我都会根据您提供的线索尽量回答。
您是否考虑过使用接受参数的函数,这些参数又可以用来构造您的正则表达式?大致如下:
def get_regex_expressions(variable_name):
regex_expressions = ((rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))', r''),(rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))', r''))
return regex_expressions
然后你可以在从模块C导入上面的函数时传递A或B中存在的变量(假设这是你想要的结构)。
我有几个具有相似正则表达式的不同模块。
在模块 A 中,我有:
string_to_find = rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))'
string_to_replace = r''
在模块 B 中,我有:
string_to_find = rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))'
string_to_replace = r''
我想将所有这些表达式收集到一个元组 ((..,..),(..,..))
中,该元组由模块 C 中的函数 C 返回:
def get_regex_expressions():
regex_expressions = ((rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))', r''),(rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))', r''))
return regex_expressions
问题是它们中的一些是 f-strings,而 'variable_name',虽然在模块 A 和 B 中定义,但在模块 C 中没有定义。例如,在模块 A 中,我想成为能够 运行 t = get_regex_expressions()
然后将第一个元组中的第二个表达式 t[0][1]
传递到 re.sub
命令中。如何调整 regex_expressions 以便它们可以存储在不同模块的元组中?我尝试将整个表达式放在双引号“”中。这消除了错误,但现在我不确定它是否会被视为正确的 f 字符串。
首先,将 f 字符串表达式放在另一组引号中不会满足您的需求。
其次,我觉得你的问题是XY problem的一个例子。我们需要更多地了解“你想实现什么”,而不是“你想如何实现它”。无论哪种方式,我都会根据您提供的线索尽量回答。
您是否考虑过使用接受参数的函数,这些参数又可以用来构造您的正则表达式?大致如下:
def get_regex_expressions(variable_name):
regex_expressions = ((rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,|\))', r''),(rf'([^_A-z]{variable_name}\()(.+?)(,\s?)(.+?)(,\s?)(.+?)(,|\))', r''))
return regex_expressions
然后你可以在从模块C导入上面的函数时传递A或B中存在的变量(假设这是你想要的结构)。