【问题标题】:Get regexp group only if matching仅在匹配时获取正则表达式组
【发布时间】:2013-08-29 20:40:56
【问题描述】:

我有两个字符串

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

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

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

对于第二个字符串

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

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

我的正则表达式应该是什么样子?

【问题讨论】:

  • 任何特定的语言?
  • 向我们展示您到目前为止所做的尝试。 不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。当你尝试它时发生了什么?你得到不正确的结果吗?您得到 no 结果了吗?如果结果不正确,是什么导致它们不正确?你期待什么?你得到任何正确的结果了吗?如果是这样,它们是什么?不要让我们猜测。

标签: regex


【解决方案1】:

尝试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多