我正在尝试编写一个正则表达式来识别 if 语句。我遇到的唯一问题是让它捕获 if 括号中带有括号的语句。例如:
if (condition_function(params)) {
statements;
}
我捕获除这些以外的所有 if 语句的表达式是:
if\s*\(([^\(\)]|\s)*\)\s*{(.|\s)*?}
有谁知道怎么写?
最佳答案
这对于正则表达式是不可能的,因为正则表达式只能匹配正则语言,而您尝试解析的语言是上下文无关的而不是正则的(感谢 dirkgently 和 dmckee)。
看看WP: Formal language theory你有兴趣吗...
顺便提一句。如果正确([[][]]
是正确的,但 []][
不是),您甚至无法检查仅由括号组成的表达式,这是您上面给出的一个“子问题”。
关于regex - 用于识别 If 语句的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651455/