gpt4 book ai didi

python - 如何在 Python 中创建包含常规变量和一些固定文本的正则表达式?

转载 作者:行者123 更新时间:2023-11-30 22:16:32 25 4
gpt4 key购买 nike

在代码中,我只想从 if 条件中使用的 c 文件中获取变量名称。以下是正则表达式的代码片段:

fieldMatch = re.findall(itemFieldList[i]+"=", codeline, re.IGNORECASE);

在这里我可以从文件中找到变量itemFieldList[i]。但是,当我尝试添加 if 时,如下所示,即使 if 条件下的 C 代码中存在变量,也不会提取任何内容作为输出。

fieldMatch = re.findall(("^(\w+)if+[(](\w+)("+itemFieldList[i]+")="), codeline, re.IGNORECASE|re.MULTILINE);

任何人都可以建议我们如何创建正则表达式来获取提到的场景。

示例输入:

IF(WORK.env_flow_ind=="R") 

或者

IF( WORK.qa_flow_ind=="Q" OR WORK.env_flow_ind=="R") 

此处 itemFieldList[i] = WORK.env_flow_ind

最佳答案

我没有足够的声誉来发表评论,这是应该的,而且我不能说我完全理解这个问题。但要指出几点:

这是关于向您的正则表达式添加变量,那么您应该使用字符串模板来使其对我们和您 future 的自己更容易理解。

"^{}".format(variable)

这样做将允许您创建一个动态正则表达式来搜索您想要的内容。

其次,我认为这不是你的问题。我认为你的正则表达式格式错误。我不知道您到底想搜索什么,但我建议阅读 python regex documentation并在类似 regex101 的资源上测试您的正则表达式以确保您捕获了您想要捕获的内容。据我所知,您对有点困惑。当您在模式两边加上括号时,您将其识别为一个。您尝试通过用方括号括起来来排除搜索中的括号,这是正确的做法,但转义它们更简单、更干净。

如果您试图捕获此语句:

if(someCondition == fries)

并且您想要提取关键字 fries,该模式的有效语法是:

(?=if\((?:[\w=\s])+(fries)\))

由于您希望它是动态的,因此您可以将字符串 fries 替换为您的字符串模板,您将得到如下所示的代码:

p = re.compile("(?=if\((?:[\w=\s])+({})\))".format(search), re.IGNORECASE)
p.findall(string)

Regex101 在分解我的正则表达式方面比我以前做得更好:

Link cuz i have no rep

关于python - 如何在 Python 中创建包含常规变量和一些固定文本的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49938058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com