Codeception URL 正则表达式
Codeception URL regex
所以官方文档完全没有提到正则表达式模式中使用的波浪号 (~
),例如在 seeCurrentUrlMatches()
函数中。然而,它在文档中被广泛使用。
在示例中,正则表达式如下所示:
$I->seeCurrentUrlMatches('~$/users/(\d+)~');
- 没有波浪号会报错。例如。
grabFromCurrentUrl('(\d+)')
returns:
" (\d+)" Fail Nothing to grab. A regex parameter required.
- 字符串结尾正则表达式运算符 (
$
)
位置没有意义(我认为美元符号完全
在这种情况下的不同含义 /我的猜测是 shorthand 对于主路径/。)
- 在标准正则表达式中,
~
捕获字符本身
我的结论是,Codeception 期望您使用的正则表达式模式显然是非标准的。那么 ~
和 $
有什么作用呢?我在哪里可以找到关于此的完整文档或文章?
Codeception 不使用任何特殊的正则表达式函数。
seeCurrentUrlMatches
方法调用 PhpUnit 的 assertRegexp
方法,该方法在底层使用 preg_match
。
preg_match
使用模式 delimiters。分隔符可以是任何非字母数字字符。
/
是最常用的分隔符,但是匹配URL不方便,因为URL中需要转义很多斜线,所以用~
作为分隔符避免需要逃跑。
模式开头的$
可能是示例中的一个简单错误。
所以官方文档完全没有提到正则表达式模式中使用的波浪号 (~
),例如在 seeCurrentUrlMatches()
函数中。然而,它在文档中被广泛使用。
在示例中,正则表达式如下所示:
$I->seeCurrentUrlMatches('~$/users/(\d+)~');
- 没有波浪号会报错。例如。
grabFromCurrentUrl('(\d+)')
returns:" (\d+)" Fail Nothing to grab. A regex parameter required.
- 字符串结尾正则表达式运算符 (
$
) 位置没有意义(我认为美元符号完全 在这种情况下的不同含义 /我的猜测是 shorthand 对于主路径/。) - 在标准正则表达式中,
~
捕获字符本身
我的结论是,Codeception 期望您使用的正则表达式模式显然是非标准的。那么 ~
和 $
有什么作用呢?我在哪里可以找到关于此的完整文档或文章?
Codeception 不使用任何特殊的正则表达式函数。
seeCurrentUrlMatches
方法调用 PhpUnit 的 assertRegexp
方法,该方法在底层使用 preg_match
。
preg_match
使用模式 delimiters。分隔符可以是任何非字母数字字符。
/
是最常用的分隔符,但是匹配URL不方便,因为URL中需要转义很多斜线,所以用~
作为分隔符避免需要逃跑。
$
可能是示例中的一个简单错误。