另一个正则表达式:方括号


Another regex: square brackets

我有一个类似的东西:word[val1|val2|val3]。需要一个正则表达式来同时捕获:wordval1|val2|val3

另一个示例:leader[77]结果:需要一个正则表达式来捕获:leader77

这就是我目前所拥有的:^(.*'[)(.*),它给了我: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];