在许多语言中,函数调用由一个段塞和任意数量的用括号括起来的参数组成,如:
my_function(); // no arguments
my_function(one_argument);
my_function(first_argument,second_argument);
my_function(first_argument,second_argument,third_argument);
哪个正则表达式将与带有两个参数的大小写完全匹配(上面伪代码中的第三个大小写)?
";显而易见的答案";将类似于CCD_ 1。然而,括号的特殊含义破坏了这个表达式。
您可以使用否定字符类编写这样的模式,也可以省略匹配逗号:
w+([^,)]+,[^,)]+);
解释
w+
匹配1+个单词字符(
匹配`(1[^,)]+
匹配除,
和)
之外的1+个字符,
匹配单个逗号[^,)]+
匹配除,
和w+([^)]+,[^)]+)
0之外的1+个字符);
匹配);
Regex演示
尝试:
/w+([a-zA-Z_$][w$]*, ?[a-zA-Z_$][w$]*);/g
RegEx101
段 | 描述 |
---|---|
\w+\([a-zA-Z_$] | 任何字母、数字或下划线一次或多次,然后是文字( ,然后是任何字母、下划线或美元符号 |
[\w$]* | 任何字母、数字、下划线或美元符号零次或多次,然后是文字, ,然后是一个空格或什么都没有 |
[a-zA-Z_$][\w$]*\) | 任何字母、下划线或美元符号,然后任何字母、数字、下划线或金额符号零次或多次,然后是文字); |