我正在使用正则表达式从合同中读取所有函数名称。 例子
[['c', 1], ['b', 1], ['c', 2], ['b', 2], ['c', 3], ['b', 3]]
预期输出:
(void) function_name1(int, int);
(void) function_name2(int, int);
(void) function_name3(int, int);
(void) function_name4(int, int);
我正在使用正则表达式function_name1
function_name2
function_name3
function_name4
通过此表达式,我在函数的开头将函数名称与空格分组。
请帮助我如何忽略此空间。
答案 0 :(得分:1)
正则表达式中的any space
(空格,制表符或换行符)为\s
,因此您可以使用
\)\s*(.*?)\(
答案 1 :(得分:1)
这应该有效
(\w+)\s*\([^()]*\)
请参阅https://regex101.com/r/CzjFWt/1
<?php
$i = '(void) function_name1(int, int);
(void) function_name2(int, int);
(void) function_name3(int, int);
(void) function_name4(int, int);';
$r = '(\w_+)\s*\([^()]*\)';
preg_match_all('|' . $r . '|sm',
$i,
$o, PREG_PATTERN_ORDER);
foreach($o[1] as $v)echo $v;
结果:
function_name1function_name2function_name3function_name4
或输出完整的结果数组:
echo var_export($o[1]);
php中的示例: http://sandbox.onlinephpfunctions.com/code/b3e387797e12853be040e00fcfd1d804629797b6
结果是:
array (
0 => 'function_name1',
1 => 'function_name2',
2 => 'function_name3',
3 => 'function_name4',
)
答案 2 :(得分:0)
尝试一下并参加分组1
(?:\)\s*)(\w+)
非捕获组 (?:\)\s)
\)
从字面上匹配字符)
(区分大小写)
\s
匹配任何空白字符(等于[\r\n\t\f\v ]
)
第一个捕获组 (\w+)
\w+
匹配任何单词字符(等于[a-zA-Z0-9_]
)