如何使用多行字符使用否定的后向匹配字符串?

问题描述 投票:0回答:1

[我试图创建some examples以了解与PRCE更好的正则表达式断言。

//(?<=) - positive lookbehind
$string = "dra Julia \ndr Marcos \ndr Mateus \ndra Ana";
$regex  = "/(?<=dra\s)(\w+)/im";
preg_match_all($regex, $string, $matches);
var_dump($matches);

可以正常返回“ Julia”和“ Ana”但负面版本:

$regex  = "/(?<!^dra\s)\b\w+\b$/im";
preg_match_all($regex, $string, $matches);
var_dump($matches);

返回空:(我期望像使用regex101一样使用“ Marcos”和“ Mateus”。

如何获得此结果?

php regex pcre negative-lookbehind
1个回答
0
投票

名称后面有一个空格。

您可以将样式更新为

(?<!^dra\h)\b\w+\b\h*$

Regex demo

请注意,\s也匹配换行符,\h匹配水平空格字符。

© www.soinside.com 2019 - 2024. All rights reserved.