在代码中,我只想从if条件中使用的c文件中获取变量名。 下面是regex的代码片段:
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);
有谁能建议我们如何创建regex来获取上述场景吗。你知道吗
样本输入:
IF(WORK.env_flow_ind=="R")
或者
IF( WORK.qa_flow_ind=="Q" OR WORK.env_flow_ind=="R")
此处itemFieldList[i]=工作环境流索引你知道吗
您可以将regex模式构建为:
这将查找小写的单词“if”,然后是任意空格,然后是左括号,然后是任意字符,然后是您的搜索词,它的开头和结尾在单词边界处。你知道吗
所以如果变量名是工作环境流索引,则
re.findall(pattern, textfile)
将匹配以下行:这些不匹配:
我没有足够的声誉来评论这个问题,这是应该的,我不能说我完全理解这个问题。但要指出几点:
它是关于添加变量到你的正则表达式,然后你应该使用字符串模板,使我们和你未来的自我更容易理解。你知道吗
这样做将允许您创建一个搜索所需内容的动态正则表达式。你知道吗
第二,我不认为这是你的问题。我认为你的正则表达式格式不正确。我不知道您到底想搜索什么,但我建议您阅读python regex documentation,并在regex101这样的资源上测试regex,以确保您捕获了您想要的内容。据我所知,您对组有点困惑。当你在一个模式周围加上括号时,你就把它标识为一个组。在搜索过程中,您试图用方括号将圆括号括起来,从而排除圆括号,但这样做更简单、更简洁。你知道吗
如果您试图捕获此语句:
如果要提取关键字fries,则该模式的有效语法为:
因为您希望这是动态的,所以您可以用字符串模板替换字符串fries,您将得到这样的代码:
Regex101在分解我的regex方面做得比以前更好:
Link cuz i have no rep
相关问题 更多 >
编程相关推荐