Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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/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
什么是~&引用;PHP正则表达式中的字符表示法?_Php_Regex_Preg Match All - Fatal编程技术网

什么是~&引用;PHP正则表达式中的字符表示法?

什么是~&引用;PHP正则表达式中的字符表示法?,php,regex,preg-match-all,Php,Regex,Preg Match All,下面的“~”字符是什么意思 preg_match_all("~<img [^>]+>~", $inputw, $output); preg\u match\u all(“~]+>”,$inputw,$output); 我的猜测是它们是开始和结束标记,如^和$ 这是一个 分隔符可以是任何非字母数字、非反斜杠、非空白字符 正如Nambi所说,您可以自由选择正则表达式中的分隔符。但是,如果分隔符出现在模式中,则必须对其进行转义。知道了这一点,想象一下下面的情况 '/\/var\/

下面的“~”字符是什么意思

preg_match_all("~<img [^>]+>~", $inputw, $output);
preg\u match\u all(“~]+>”,$inputw,$output);
我的猜测是它们是开始和结束标记,如^和$

这是一个


分隔符可以是任何非字母数字、非反斜杠、非空白字符

正如Nambi所说,您可以自由选择正则表达式中的分隔符。但是,如果分隔符出现在模式中,则必须对其进行转义。知道了这一点,想象一下下面的情况

'/\/var\/www\/test/' # delimited with /
'~/var/www/test~' # delimited with ~
最后一个不需要转义
/
,因为分隔符现在是
~
。干净多了,不是吗


一般来说,我们鼓励您选择一个不是模式本身模式的分隔符,我想
~
作为
/
的替代品被广泛分发,因为它很少出现在现实世界的模式中。

他们没有告诉您的肮脏的小分隔符秘密->

示例:

成对分隔符(原始:
\d{2}一些\{33\}\w{5}

{\d{2}一些\\{33\\}\w{5}
解析为
\d{2}一些\\{33\\}\w{5}

{\d{2}Some\{33\}\w{5}
解析为
\d{2}Some{33}\w{5}

未配对的分隔符(原始:
\d{2}一些\+33\+\w{5}

+\d{2}Some\+33\+\w{5}+
解析为
\d{2}Some+33+\w{5}


+\d{2}一些\\+33\\+\w{5}+
无法解析,因为分隔符未转义。

我猜它们是开始和结束标记,如^和$。
似乎是您回答了自己的问题。@ShankarDamodaran,但事实并非如此——它们与
^
$
无关。@Nambinarayanan的链接指出:如果分隔符经常出现在模式中,最好选择另一个分隔符以增加可读性@你知道他们说什么吗links@dollarvar最好在这里包含答案的基本部分。我想你是在暗示这个答案是多余的,因为提供的链接已经说明了这一点,但我很可能弄错了。@dollarvar我和OGHaza在一起(否则我不会给出答案)。我觉得在这里多说一两句是可以的。@OGHaza啊,不,我不得不从你的评论中去掉两件事:a)我可能感到困惑,但你是否认为,另一个回答者没有包括足够的内容?b) 不,我只是给出了链接的内容,因为它符合并很好地支持了答案,但是他又添加了更多内容,然后似乎是多余的,哈哈,我应该删除评论吗?