Regex 正则表达式解析C代码的一些特殊情况
我试图用正则表达式检查生成的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*)
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\[\]* ]+)\)*