PHP 正则表达式匹配
PHP regular expression matching
给定输入字符串“othertext ?.abc.de.fgh.i moretext”和模式 '/\?(\.[a-zA- Z]*)*/' 我正在尝试使用函数 preg_match_all
来获取与元素 .abc, [=15= .de、.fgh 和 .i 但只有 ?.abc.de.fgh.i 和 .i 匹配。 (The test)
您可以使用 \G
锚点
(?:\?|\G(?!^))\K\.[a-zA-Z]+
部分:
(?:
非捕获组
\?
匹配 ?
|
或
\G(?!^)
在上一场比赛结束时声明位置,而不是在开始时
)
关闭群组
\K\.[a-zA-Z]+
忘记当前匹配的内容,匹配 .
和 1+ 个字符 a-zA-Z
$re = '/(?:\?|\G(?!^))\K\.[a-zA-Z]+/';
$str = 'othertext ?.abc.de.fgh.i moretext';
preg_match_all($re, $str, $matches);
var_dump($matches[0]);
输出
array(4) {
[0]=>
string(4) ".abc"
[1]=>
string(3) ".de"
[2]=>
string(4) ".fgh"
[3]=>
string(2) ".i"
}
给定输入字符串“othertext ?.abc.de.fgh.i moretext”和模式 '/\?(\.[a-zA- Z]*)*/' 我正在尝试使用函数 preg_match_all
来获取与元素 .abc, [=15= .de、.fgh 和 .i 但只有 ?.abc.de.fgh.i 和 .i 匹配。 (The test)
您可以使用 \G
锚点
(?:\?|\G(?!^))\K\.[a-zA-Z]+
部分:
(?:
非捕获组\?
匹配?
|
或\G(?!^)
在上一场比赛结束时声明位置,而不是在开始时
)
关闭群组\K\.[a-zA-Z]+
忘记当前匹配的内容,匹配.
和 1+ 个字符 a-zA-Z
$re = '/(?:\?|\G(?!^))\K\.[a-zA-Z]+/';
$str = 'othertext ?.abc.de.fgh.i moretext';
preg_match_all($re, $str, $matches);
var_dump($matches[0]);
输出
array(4) {
[0]=>
string(4) ".abc"
[1]=>
string(3) ".de"
[2]=>
string(4) ".fgh"
[3]=>
string(2) ".i"
}