仅当匹配时获取regexp组
我有两条线仅当匹配时获取regexp组,regex,Regex,我有两条线 "#string1" (1111) {string2} "#string1" (1111) 我想编写与三组匹配的正则表达式。对于第一个字符串: 1 => #string1 2 => 1111 3 => string2 第二串呢 1 => #string1 2 => 1111 3 => 问题是我不知道如何生成所有三个组,但如果字符串不包含大括号,则将第三个组设为空。我可以为第一个字符串匹配所有三个组,为第二个字符串匹配任何组,或者为两个字符串匹
"#string1" (1111) {string2}
"#string1" (1111)
我想编写与三组匹配的正则表达式。对于第一个字符串:
1 => #string1
2 => 1111
3 => string2
第二串呢
1 => #string1
2 => 1111
3 =>
问题是我不知道如何生成所有三个组,但如果字符串不包含大括号,则将第三个组设为空。我可以为第一个字符串匹配所有三个组,为第二个字符串匹配任何组,或者为两个字符串匹配前两个组
我的regexp应该是什么样子?试试:
^"([^"]*)" \(([^)]*)\)(?: \{([^}]*)\})?$
尝试:
^"([^"]*)" \(([^)]*)\)(?: \{([^}]*)\})?$
有什么特别的语言吗?告诉我们你到目前为止试过什么。不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。你试的时候发生了什么?你得到了不正确的结果吗?你没有得到结果吗?如果结果不正确,是什么导致结果不正确?你在期待什么?你得到正确的结果了吗?如果是,它们是什么?别让我们猜。有什么特别的语言吗?告诉我们你到目前为止都试了些什么。不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。你试的时候发生了什么?你得到了不正确的结果吗?你没有得到结果吗?如果结果不正确,是什么导致结果不正确?你在期待什么?你得到正确的结果了吗?如果是,它们是什么?别让我们猜。