Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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_Pcre - Fatal编程技术网

Php 有没有办法在多行上编写正则表达式模式?

Php 有没有办法在多行上编写正则表达式模式?,php,regex,pcre,Php,Regex,Pcre,我经常以超复杂和长正则表达式结束。PCRE@PHP 很长一段时间以来,我一直在寻找一种方法来做一些事情,比如: preg_match('#blablabla... blablablablablabla... blablablablablabla... blablablablablabla... blablablablablabla... blablablablablabla... blablablablablabla... blablablablablabla... blablablab

我经常以超复杂和长正则表达式结束。PCRE@PHP

很长一段时间以来,我一直在寻找一种方法来做一些事情,比如:

    preg_match('#blablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablablablablabla...
blablabla#uis');
而不是:

preg_match('#blablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablablablablabla...blablabla#uis');
如果我实际换行,这将成为正则表达式的一部分。也许不是实际的换行符,而是空白。除非我完全错了

是否可以在每行末尾使用一些字符来表示:“这应该是一行”

您可以使用支持变量插值(或不支持变量插值)的。请参见文档中关于量词的内容:

x(PCRE_扩展)
如果设置了此修饰符,则模式中的空白数据字符将被完全忽略,除非转义或在字符类内部,并且字符类外部的未转义#和下一个换行符(包括)之间的字符也将被忽略。这相当于Perl的/x修饰符,并使在复杂模式中包含注释成为可能。但是,请注意,这仅适用于数据字符。空白字符可能永远不会出现在模式中的特殊字符序列中,例如,在序列(?)中,该序列引入了条件子模式

//herdoc

$pattern_with_interpolation=就在我的头顶上,你可以把模式放在一个变量中(你可以这样写)并在将换行符输入正则表达式函数时去除换行符。使用NOWDOC/herdoc字符串文字并使用
/x
修饰符。但您需要记住转义文字空白和
#
。我建议将标题编辑为更便于搜索的内容,如“如何在多行上编写正则表达式模式”.我认为这是一个好问题,从长远来看,更准确的标题会让你受益匪浅。