Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当匹配时获取regexp组_Regex - Fatal编程技术网

仅当匹配时获取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应该是什么样子?

试试:

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

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

有什么特别的语言吗?告诉我们你到目前为止试过什么。不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。你试的时候发生了什么?你得到了不正确的结果吗?你没有得到结果吗?如果结果不正确,是什么导致结果不正确?你在期待什么?你得到正确的结果了吗?如果是,它们是什么?别让我们猜。有什么特别的语言吗?告诉我们你到目前为止都试了些什么。不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。你试的时候发生了什么?你得到了不正确的结果吗?你没有得到结果吗?如果结果不正确,是什么导致结果不正确?你在期待什么?你得到正确的结果了吗?如果是,它们是什么?别让我们猜。