Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 Perl正则表达式提取子字符串,因为存在其他子字符串_Regex_Perl_Substring_Conditional - Fatal编程技术网

Regex Perl正则表达式提取子字符串,因为存在其他子字符串

Regex Perl正则表达式提取子字符串,因为存在其他子字符串,regex,perl,substring,conditional,Regex,Perl,Substring,Conditional,我需要提取一个子字符串,因为存在另一个子字符串。在下面的示例中,单词ERROR:表示值12345678。我需要12345678的值。在第二个示例中,错误:不存在。因此,我不需要结果。就我所知: ERROR:.*(\d) 20170808错误:已达到TXN 12345678请求限制 20170808警告:TXN 22345678等待到期 如果你是正则表达式大师,那么你知道上面的匹配 错误:TXN 12345678 组中只有数字8。我需要整数。谢谢你的帮助 您可以使用 ERROR:.*?(\d+)

我需要提取一个子字符串,因为存在另一个子字符串。在下面的示例中,单词ERROR:表示值12345678。我需要12345678的值。在第二个示例中,错误:不存在。因此,我不需要结果。就我所知:

ERROR:.*(\d)
20170808错误:已达到TXN 12345678请求限制

20170808警告:TXN 22345678等待到期

如果你是正则表达式大师,那么你知道上面的匹配

错误:TXN 12345678

组中只有数字8。我需要整数。谢谢你的帮助

您可以使用

ERROR:.*?(\d+)
看。在这里,
*?
将尽可能少地匹配除换行符以外的任何0+字符(因为
*?
是惰性量词),并且
(\d+
将捕获到组1中的一个或多个数字

或者,或者

ERROR:.*\D(\d+)
看。在这里,
*\D
将尽可能多地匹配除换行符以外的任何0+字符(因为
*
是贪婪的量词),直到并包括最后一个非数字字符(使用
\D
),然后
(\D+)
将捕获到组1中的一个或多个数字

选择最适合您的场景的模式(如果数字是
错误:
之后的第一组数字,则第一个模式最佳;如果数字组是行中的最后一组数字,则第二个模式最佳)