Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
PHP正则表达式不匹配_Php_Regex - Fatal编程技术网

PHP正则表达式不匹配

PHP正则表达式不匹配,php,regex,Php,Regex,即使什么都没有,我也在努力匹配。 我要匹配的字符串是: Linha digitavel 999999 barra:vencimento:2017年8月7日 我有一个正则表达式: preg_match("/Linha digitavel ([\.0-9\s]+) barra: ([0-9]+|\0) vencimento: (.*)/", $input, $output); 当巴拉身上有东西时效果很好,但如果没有就失败了。 我试过使用([0-9]+|)、([0-9]*)和([0-9]{0,}),

即使什么都没有,我也在努力匹配。 我要匹配的字符串是: Linha digitavel 999999 barra:vencimento:2017年8月7日

我有一个正则表达式:

preg_match("/Linha digitavel ([\.0-9\s]+) barra: ([0-9]+|\0) vencimento: (.*)/", $input, $output);
当巴拉身上有东西时效果很好,但如果没有就失败了。 我试过使用([0-9]+|)、([0-9]*)和([0-9]{0,}),它们都不起作用

测试字符串:

不起作用:

Linha digitavel 3083981 barra: vencimento: 07/08/2017
作品:

Linha digitavel 3083981 barra: 0303456 vencimento: 07/08/2017
请尝试以下操作:

preg_match("/Linha digitavel ([\.0-9\s]+) barra: ([0-9]+|\0)? vencimento: (.*)/", $input, $output);

请注意,表示数字的问号是可选的

问题是,如果缺少barra值,则空间也会减少一个。您也需要考虑到这一点,将空间设置为可选空间

preg\u match(“/Linha digitalvel([\.0-9\s]+)barra:([0-9]*.\0)\s?vencimento:(.*)/”,$input,$output)

(还将
[0-9]+
更改为
[0-9]*
,使其成为可选)


为了澄清问题,您可以展示一个缺少数据的示例行吗?是的,当然可以。没有工作:Linha Digitalvel 3083981 barra:vencimento:07/08/2017工作:Linha Digitalvel 3083981 barra:0303456 vencimento:07/08/2017