Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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 用正则表达式查找函数?_Regex - Fatal编程技术网

Regex 用正则表达式查找函数?

Regex 用正则表达式查找函数?,regex,Regex,在记事本++中,有许多对各种编程语言有用的语法高亮显示,我想知道它是如何做到的。我想知道它如何区分函数的不同范围 例如,它如何区分内部和外部功能 function myFunction(arguments){ function functionInsideMyFunction(arguments){ return 0; } } 我相信这很简单,但我对regex还不熟悉,理解起来还是有点困难 比如说,我希望正则表达式只匹配其他函数中没有的函数。我想得到我的函数,但

在记事本++中,有许多对各种编程语言有用的语法高亮显示,我想知道它是如何做到的。我想知道它如何区分函数的不同范围

例如,它如何区分内部和外部功能

function myFunction(arguments){
    function functionInsideMyFunction(arguments){
        return 0;
    }
}
我相信这很简单,但我对regex还不熟悉,理解起来还是有点困难


比如说,我希望正则表达式只匹配其他函数中没有的函数。我想得到我的函数,但不是functionInsideMyFunction

不使用正则表达式,而是使用称为lexer的东西。绝地武士的词汇量是,词汇量让我感到困惑,但如果你愿意,你可以学习。若您使用java,您可以使用YourClass.class.whatev进一步处理类的内部结构,甚至可以使用。记事本++使用类似的东西。除了基本的行和字符串解析之外,正则表达式没有足够的扩展性,正则表达式覆盖了一组函数语言,这些语言位于“表达性”的低端。。。有许多语言结构,您将无法用正则表达式解决/解析,这里的一个好例子是

上面的函数定义基本上是一样的,“左括号”是
函数…(…){
,“右括号”是一个简单的
}

使用正则表达式无法解决此问题,因为它属于一组具有更高表达能力的语言(另请参见)


您需要解析(Chomsky-)级别3以上的语言(这是正则表达式可以解析的),这是一个正确的方法。有许多不同的技术/算法,每种都适用于具有特定表达能力的语言。在这里解释这些可能有点过火,如果你真的想深入其中,我建议你读一下,并且(在解析编程语言时经常用到这些)。

让记事本++来理解它,很高兴它能做到does@ibu是的,尤其是在查看lexer文件之后:);我最近尝试用正则表达式解析XML来去除标记。。。。结局不好;D