Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 preg_替换:帮我摸索(?=:)_Php_Regex_Preg Replace - Fatal编程技术网

PHP preg_替换:帮我摸索(?=:)

PHP preg_替换:帮我摸索(?=:),php,regex,preg-replace,Php,Regex,Preg Replace,在中,有以下几行: $value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT'; $value = preg_replace('/(^.+?)(?=:)/e', "strtolower('\\1')", $value); // yields 'x-cem-date:Wed, 16 Dec 2009 15:42:28 GMT' 该(?=:)位表示搜索冒号,它必须。但是,我不理解那个特殊的语法,比如?=。那里到底发生了什么事?这是一个问题。它查看特定的子表达

在中,有以下几行:

$value='x-Cem-Date:Wed, 16 Dec 2009 15:42:28 GMT';
$value = preg_replace('/(^.+?)(?=:)/e', "strtolower('\\1')", $value);
// yields 'x-cem-date:Wed, 16 Dec 2009 15:42:28 GMT'
(?=:)
位表示搜索冒号,它必须。但是,我不理解那个特殊的语法,比如
?=
。那里到底发生了什么事?

这是一个问题。它查看特定的子表达式是否出现在该点之后。但它不会在比赛中消耗任何东西:

积极前瞻的工作原理是一样的
q(?=u)
匹配紧跟着一个
u
q
,而不使
u
成为匹配的一部分。正向前瞻结构是一对圆括号,左括号后跟问号和等号-

正如您可能注意到的,在替换文本时,“环视”特别有用,因为您不需要在替换文本中包含周围的环境。例如,要用
qu
替换后面没有
u
的每个
q
,可以执行以下操作

replace 'q([^u])' by 'qu\1'
但这会捕获以下字符,因为它是匹配的一部分,稍后会再次重新插入。您还可以使用环视:

replace 'q(?!u)' by 'qu'
其中只有q被匹配和替换,因此不再需要在替换字符串中包含部分匹配。

这是一个错误。它查看特定的子表达式是否出现在该点之后。但它不会在比赛中消耗任何东西:

积极前瞻的工作原理是一样的
q(?=u)
匹配紧跟着一个
u
q
,而不使
u
成为匹配的一部分。正向前瞻结构是一对圆括号,左括号后跟问号和等号-

正如您可能注意到的,在替换文本时,“环视”特别有用,因为您不需要在替换文本中包含周围的环境。例如,要用
qu
替换后面没有
u
的每个
q
,可以执行以下操作

replace 'q([^u])' by 'qu\1'
但这会捕获以下字符,因为它是匹配的一部分,稍后会再次重新插入。您还可以使用环视:

replace 'q(?!u)' by 'qu'
只有q被匹配和替换,因此不再需要在替换字符串中包含部分匹配。

Ah是的。它“匹配但不包括”。谢谢你给它起个名字。啊,是的。它“匹配但不包括”。谢谢你给它起个名字。