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

时间:2016-07-22 12:11:52

标签: php regex preg-match

我有类似的话:word[val1|val2|val3]。需要正则表达式来捕获两者:单词 val1 | val2 | val3

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

这是我到目前为止:^(.*\[)(.*)它给了我:array [0] = word [val1 | val2 | val3];

阵列[1] =字[

阵列[2] = VAL1 | val2的| VAL3]

需要

数组[1],但没有 [

需要

数组[2],但没有]

有什么想法吗? - 谢谢

2 个答案:

答案 0 :(得分:4)

对于任何一个,您都可以使用 protected void RepData_ItemCommand(object source, RepeaterCommandEventArgs e) { string commandName = e.CommandName.ToString(); if (commandName == "Saved")//this is if btnsave is clicked { //your code here }

\w*(\[.*\])匹配任何单词字符[a-zA-Z0-9_] 量词:\w*在零和无限次之间

*字面匹配字符\[ [匹配任何字符(换行符除外) .*字面匹配字符\]

编辑:我一直在努力摆脱括号并提出]

编辑:在我回到我之前,我现在看到Wiktor在评论中建议。

答案 1 :(得分:2)

您可以使用

([^][]+)\[([^][]*)]

以下是regex demo

<强>解释

  • ([^][]+) - 第1组匹配][以外的一个或多个字符
  • \[ - 文字[
  • ([^][]*) - 第2组捕获除[]以外的0 +字符
  • ] - 文字]

请参阅IDEONE demo

$re = '~([^][]+)\[([^][]*)]~'; 
$str = "word[val1|val2|val3]"; 
preg_match($re, $str, $matches);
echo $matches[1]. "\n" . $matches[2];