在regex中查找冒号后面的单词

时间:2017-04-06 10:53:41

标签: php regex laravel

我得到的结果是返回laravel控制台命令,如

  

有些文字为:'Nerad'

现在我试过了

  

$ regex ='/(?< = \ bSome text as:\ s)(?:[\ w - ] +)/是';

     

preg_match_all($ regex,$ d,$ matches);

但它返回空。 我的猜测单引号有问题,为此我需要更改正则表达式.. 有什么猜测?

2 个答案:

答案 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+)'$/