Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Regex 选择性正则表达式并发症_Regex_Perl - Fatal编程技术网

Regex 选择性正则表达式并发症

Regex 选择性正则表达式并发症,regex,perl,Regex,Perl,我有以下意见: stuff (2+13:02) more stuff (20:32) more more stuff (8+23:00) 2+是可选的,代表一个完全不同的值,因此我编写了以下正则表达式: /((?:(\d)?+?)(\d+:\d+)/g $1应始终是+之前的数字,并将其余数字和:分组到$2中,但这并不总是发生。在(20:32)的示例中,$1将是2,$2将是0:32。如何使$1undef和$2=20:32 有什么想法吗 谢谢大家! 尝试将?移动到您想要可选的组之后。此外,如果要匹

我有以下意见:

stuff (2+13:02)
more stuff (20:32)
more more stuff (8+23:00)
2+
是可选的,代表一个完全不同的值,因此我编写了以下正则表达式:

/((?:(\d)?+?)(\d+:\d+)/g

$1
应始终是
+
之前的数字,并将其余数字和
分组到
$2
中,但这并不总是发生。在
(20:32)
的示例中,
$1
将是
2
$2
将是
0:32
。如何使
$1
undef
$2=20:32

有什么想法吗


谢谢大家!

尝试将
移动到您想要可选的组之后。此外,如果要匹配文字
+
,通常需要转义
+

/(?:(\d)\+)?(\d+:\d+)/g
这将符合以下条件:

  • 可选的、未捕获的组:
    • 第1组中捕获的单个数字
    • 文字
      +
  • 组2中捕获的一个或多个数字,后跟一个
    ,后跟一个或多个数字

尝试将
移动到要可选的组之后。此外,如果要匹配文字
+
,通常需要转义
+

/(?:(\d)\+)?(\d+:\d+)/g
这将符合以下条件:

  • 可选的、未捕获的组:
    • 第1组中捕获的单个数字
    • 文字
      +
  • 组2中捕获的一个或多个数字,后跟一个
    ,后跟一个或多个数字