Regexp:我如何匹配函数调用及其上面的注释

时间:2015-10-09 04:49:39

标签: php regex preg-match-all

#hello world calling

hello_world();

============================
//hello world calling

hello_world('hello');
==========================
/*
    Hello World Calling
    multiline comment
*/

hello_world('hello','world');

如何匹配具有不同评论风格的所有3个部分以及被调用的函数。

除此之外,我想捕获注释以及函数的参数。示例

array(
    array(
        [0] => 'hello world calling';
        [1] => 'hello world calling';
        [2] => 'hello world calling multiline comment';
    )
    array(
        [0] => '';
        [1] => 'hello';
        [2] => 'hello world';
    )
)

尝试了一些正则表达式,但没有得到我想要的

2 个答案:

答案 0 :(得分:1)

您可以尝试使用this

(?:(?:#|\/\/)(.*?)|\/\*((?:.|\n)*?)\*\/)*\n*?\b(.*?)\((.*?)\);

答案 1 :(得分:0)

我在https://regex101.com/#pcre上测试了你的文字,这些是我提出的最接近的文字。

为了纪念:

/\#(.*)|\/\/(.*)|\/\*([\w\W]*)\*\//g

结果:

MATCH 1
1.  [1-20]  `hello world calling`
MATCH 2
2.  [69-88] `hello world calling`
MATCH 3
3.  [141-188]   `
    Hello World Calling
    multiline comment
`

对于论点:

/\((.*)\)/g

结果:

MATCH 1
1.  [34-34] ``
MATCH 2
1.  [102-109]   `'hello'`
MATCH 3
1.  [204-219]   `'hello','world'`