只有匹配才能获取正则表达式组

时间:2013-08-29 12:38:46

标签: regex

我有两个字符串

"#string1" (1111) {string2}
"#string1" (1111)

我想写一个匹配三组的正则表达式。对于第一个字符串:

1 => #string1
2 => 1111
3 => string2

和第二个字符串

1 => #string1
2 => 1111
3 =>

问题是我无法弄清楚如何生成所有三个组,但如果字符串不包含花括号,则使第三个组为空。我可以将第一个字符串的所有三个组匹配,第二个字符串匹配,或者匹配两个字符串的前两个组。

我的regexp应该怎么样?

1 个答案:

答案 0 :(得分:3)

尝试:

^"([^"]*)" \(([^)]*)\)(?: \{([^}]*)\})?$