正则表达式匹配一个函数,前提是它包含一个特定的变量

Regex match a function if only if it contains a specific variable

我有从文件中读取的这个字符串。

    /**********************************************************************functionheaderstuff***********************************************************************************************************************/
void fn1(void)
{   
    b= 8;
}

/***********************************************************************functionheaderstuff***********************************************************************************************************************/

void fn2(int a, intb)
{   int c;

    var = 6;
}

我想匹配包含写入变量var的函数

有了这个 regex (?<=[*]{60}\/)(\s*\w+(?: \w+\s*)(?=(\((.*?)\)\s*{))).*(\bvar\b([^>=<!;{])*[=]{1}[^=]*?[;]),我匹配这两个函数,因为 .* 是贪婪的。我需要它在遇到 }\s*\/[*]{60} 时不匹配,并且仅在函数包含正在写入的变量时才匹配,最好仅在变量不在注释中时才匹配。

否定前瞻无效- ((?<=[*]{60}\/)\s*\w+(?: \w+\s*)(?=(\((.*?)\)\s*{)).*)(?!(\s*}\s*\/[*]{60}))(\bvar\b([^>=<!;{])*[=]{1}[^=]*?[;])

我的函数将从我共享的函数头类型开始。查找正在写入的变量并识别函数工作正常。 如果函数包含它从下一个函数获取的 var,则此正则表达式工作正常。我在这里做错了什么?

我改变了方法并得到了我需要的东西。我最初删除了所有评论。我匹配了字符串中的函数并将其添加到列表中。然后检查变量。 Python code

import regex
text = """void fn1(void){       b= 8;} void fn2(int a, intb){   int c;    var = 6;}"""

#checks for complete function definition
string1 = r'\w+(?:\s+\w+)*\w+[(][\w,\.*\s&\[\]]*[)]\s*({(?:[^{}]++|(?1))*})'

varwrite = r'\bvar\b([^>=<!;{])*[=]{1}[^=]*?[;]'
reg = regex.compile(varwrite,regex.MULTILINE )
y =[x.group() for x in regex.finditer(string1,text,regex.DOTALL)]
print(y)
for line in range(len(y)):
    if reg.search(y[line]):
        z =y[line].split('(',1)[0]
        print(z.split()[-1])