PHP preg_match 用于匹配模式中前一组的正则表达式?
PHP preg_match regex for matching a previous group in the pattern?
我在 Whosebug 中看到了这个问题,但答案没有帮助。
实际上我需要在我的正则表达式模式中引用上一组。
$s = "1:1";
$p = "/([0-9]):/";
echo preg_match($p, $s); // False
或
$p = "/([0-9]):/";
echo preg_match($p, $s); // False
转义反斜杠
<?php
$s = "1:1";
$p = "/([0-9]):\1/";
echo preg_match($p, $s);
// Output: 1
(都写在评论里了,不过不管怎样)
双引号中的字符串由 php 解释。在这种情况下,\1 变成了八进制 1。要生成斜线,您需要自己将其转义 \
。
或者您可以在单引号中使用未解释的字符串 '/([0-9]):/'
直接使用$p = "/([0-9]):?1/";
我在 Whosebug 中看到了这个问题,但答案没有帮助。 实际上我需要在我的正则表达式模式中引用上一组。
$s = "1:1";
$p = "/([0-9]):/";
echo preg_match($p, $s); // False
或
$p = "/([0-9]):/";
echo preg_match($p, $s); // False
转义反斜杠
<?php
$s = "1:1";
$p = "/([0-9]):\1/";
echo preg_match($p, $s);
// Output: 1
(都写在评论里了,不过不管怎样)
双引号中的字符串由 php 解释。在这种情况下,\1 变成了八进制 1。要生成斜线,您需要自己将其转义 \
。
或者您可以在单引号中使用未解释的字符串 '/([0-9]):/'
直接使用$p = "/([0-9]):?1/";