我得到的结果是返回laravel控制台命令,如
有些文字为:'Nerad'
现在我试过了
$ regex ='/(?< = \ bSome text as:\ s)(?:[\ w - ] +)/是';
preg_match_all($ regex,$ d,$ matches);
但它返回空。 我的猜测单引号有问题,为此我需要更改正则表达式.. 有什么猜测?
答案 0 :(得分:3)
请注意,由于'
之前的Nerad
不匹配,也没有匹配,因此您无法匹配。
如果您需要检查上下文,但避免将其包含在匹配中,在PHP正则表达式中,可以使用\K
匹配重置运算符来完成:
$regex = '/\bSome text as:\s*'\K[\w-]+/i';
请参阅regex demo
输出数组结构比使用捕获组时更清晰,您可以检查未知宽度上下文(在PHP PCRE正则表达式中,lookbehind模式是固定宽度):
$re = '/\bSome text as:\s*\'\K[\w-]+/i';
$str = "Some text as: 'Nerad'";
if (preg_match($re, $str, $match)) {
echo $match[0];
} // => Nerad
请参阅PHP demo
答案 1 :(得分:1)
从后面来,并在一个组中捕获单词。第1组将具有所需的字符串。
/:\s*'(\w+)'$/