我有类似的话:word[val1|val2|val3]
。需要正则表达式来捕获两者:单词和 val1 | val2 | val3
另一个示例:leader[77]
结果:需要正则表达式来捕获:领导者和 77
这是我到目前为止:^(.*\[)(.*)
它给了我:array [0] = word [val1 | val2 | val3];
阵列[1] =字[
阵列[2] = VAL1 | val2的| VAL3]
需要数组[1],但没有 [
需要数组[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];