创建一个 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中存在的变量(假设这是你想要的结构)。