我有一个类似的东西:word[val1|val2|val3]
。需要一个正则表达式来同时捕获:word和val1|val2|val3
另一个示例:leader[77]
结果:需要一个正则表达式来捕获:leader和77
这就是我目前所拥有的:^(.*'[)(.*)
,它给了我:array[0]=word[val1|val2|val3];
array[1]=字[
array[2]=val1|val2|val3]
需要阵列[1],但没有
需要数组[2],但没有]
有什么想法吗?-感谢
对于任何一个,您都可以使用'w*('[.*'])
'w*
匹配任何单词字符[a-zA-Z0-9_]定量器:*
在零次和无限次之间
'[
与字符[
完全匹配.*
匹配任何字符(换行符除外)']
与字符]
(字面意思为)匹配
EDIT:我一直在努力摆脱括号,想出了('w*)'[([^][]*)]
编辑:在我回复之前,我现在看到Wiktor在评论中建议我这样做。
您可以使用
([^][]+)'[([^][]*)]
这是regex演示
解释:
([^][]+)
-组1匹配除]
和[
之外的一个或多个字符'[
-文字[
([^][]*)
-第2组捕获除[
和]
之外的0+个字符- CCD_ 21-一个文字CCD_
查看IDEONE演示:
$re = '~([^][]+)'[([^][]*)]~';
$str = "word[val1|val2|val3]";
preg_match($re, $str, $matches);
echo $matches[1]. "'n" . $matches[2];