Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式解析C代码的一些特殊情况_Regex - Fatal编程技术网

Regex 正则表达式解析C代码的一些特殊情况

Regex 正则表达式解析C代码的一些特殊情况,regex,Regex,我试图用正则表达式检查生成的C代码 实际上,我需要检查的线路总是以相同的方式开始 R_Wrt_somename(V_var) 或 我已经得到了第一个表达式,但是我无法得到第二个函数调用的合适表达式 有人能帮我解决这个问题吗?我也希望能有一个正则表达式来解释,因为我刚刚开始使用它们 第一个函数类型的表达式: R_Wrt_(\w+)\((\s*(V_)[a-zA-Z_0-9\[\] ]+) 下面是一个正则表达式,它可以获取您期望的结果: R_Wrt_(\w+)\((?:\((\w+)\)\s*)

我试图用正则表达式检查生成的C代码

实际上,我需要检查的线路总是以相同的方式开始

R_Wrt_somename(V_var)

我已经得到了第一个表达式,但是我无法得到第二个函数调用的合适表达式

有人能帮我解决这个问题吗?我也希望能有一个正则表达式来解释,因为我刚刚开始使用它们

第一个函数类型的表达式:

R_Wrt_(\w+)\((\s*(V_)[a-zA-Z_0-9\[\] ]+)

下面是一个正则表达式,它可以获取您期望的结果:

R_Wrt_(\w+)\((?:\((\w+)\)\s*)?\(?(\s*(V_)[a-zA-Z_0-9\[\]* ]+)\)*

正则表达式匹配:

R_Wrt_uu-literal R_Wrt \w+-1个或多个英文字母、数字或下划线捕获到组1中 \-字面上的左括号 ?:\\w+\\s*?-一个可选的非捕获组,以避免弄乱匹配的组。。。 \-字面上的左括号 \w+-1个或多个英文字母、数字或下划线捕获到组2中 \\s*-带可选空格的文字右括号 \? - 文字可选的左括号 \s*V\[a-zA-Z\[U 0-9\[\]*]+-从原始正则表达式匹配中捕获组3。。。 \s*-可选空白 V_u-捕获到组4中的文字V_u [a-zA-Z_0-9\[\]*]+-1个或多个字符集 \*-0个或多个文字右括号。
你到底想干什么?使用正则表达式解析通用C实际上是一个失败的命题。即使对于受限制的子集,这也可能是一个挑战。示例的哪些部分不同,哪些部分是固定的?似乎R_Wrt_u的前缀可能是固定的;名称的其余部分直到括号都是变量。以前会有空白吗?在括号之前?简单变量引用的V_uu前缀是固定的,还是可以改变?你为第一场比赛写了什么?您将正则表达式嵌入哪种语言?第二个示例的变化有多大?例如,它是始终以int64作为类型转换,还是可以是其他类型?强制转换后的表达式是否始终用括号括起来?它总是一组括号,一个变量和一个乘法;数字总是3吗?这个表达式能比这更复杂吗?你在找什么问题?这些表达式后面是否有分号,或者是否有更多内容?正如你所看到的,你在这个问题上留下了大量的信息——在我们知道你在处理什么之前,很难给出一个好的答案。你说你已经有了第一个模式的正则表达式,你能把它添加到你的问题中吗?
R_Wrt_(\w+)\((?:\((\w+)\)\s*)?\(?(\s*(V_)[a-zA-Z_0-9\[\]* ]+)\)*