2017-01-31 16 views
1

我需要匹配函数的参数与特定的名称。 (在这种情况下我们说的函数名称,如果function正则表达式匹配函数的参数

所以基本上如果在一个文件中像function(my_argument)一发生,我想从中提取参数my_argument。 (基本上是我需要在这里是收集在该文件传递给function()的所有参数)

到目前为止,我想出了一个正则表达式

(([;][ ]{0,})|([ ]{1,})|(\n))function[(](([^()]*)*)[)] 

,但似乎它并没有赶上它,如果function(my_argument)是该文件的第一行。 check example in regex101.com

是否有任何方法来捕获该实例。或者如果有更好的方法来做到这一点,我也愿意接受建议,并且非常感谢。

+0

@RobbyCornelissen'function(sin(theta));函数(5)'取决于实现可能会得到'sin(theta'或'sin(theta));函数(5' –

+0

Try ['(^ |;?[] + | \ n)function [(]([^()] *)[)]'](https://regex101.com/r/sXelqd/ 1) –

+0

@JimD。yes。但是让我们假设在这种情况下,它不会是这样的,只需简单的函数调用即可,没有复杂的用法 – prime

回答

1

看来你要

(^|;?[ ]+|\r?\n)function[(]([^()]*)[)] 

regex demo

详细

  • (^|;?[ ]+|\r?\n) - 1组捕获
    • ^ - 串的开始
    • | - 或
    • ;?[ ]+ - 任选;随后与1+空格
    • | - 或
    • \r?\n - 断行(可选CR随后与LF)
  • function - 文字字符序列
  • [(] - 文字(
  • ([^()]*) - 组2捕获0+字符以外()
  • [)] - 字面)
+0

对,也许可以帮助别人。 。 – prime