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是的。它“匹配但不包括”。谢谢你给它起个名字。啊,是的。它“匹配但不包括”。谢谢你给它起个名字。