匹配特定字符前面有空格或没有正则表达式

时间:2012-07-04 04:14:59

标签: php regex

遵循这个post我正在尝试相同的任务,但是下面给出的正则表达式给了我相互矛盾的结果:

$text = "Jiaaah.. RT @mizter_popo";

$pattern = "/(^|[ ])(\RT(?=\s))/";

if(preg_match($pattern, $text)) {
    echo "correct";
} else {
    echo "wrong";
}

我希望这能给'正确'。在我的本地服务器上的PHP脚本中运行它并here返回'错误'。运行相同的逻辑here会返回'正确'吗?任何人都可以帮助解释发生了什么?或者我希望'正确'得到回应我错了?

3 个答案:

答案 0 :(得分:1)

对我来说,在此特定情况下删除\之前的RT

$pattern = "/(^|[ ])(RT(?=\s))/";

正则表达式测试站点可能正在进行一些重度消毒,以确保人们不会破坏他们的网站,这可能会扭曲哪些有效,哪些无效。

答案 1 :(得分:0)

我找到了一个使用断言而不是后视的模式。还有一些变化,但是我敢打赌,可以将这个断言考虑在一起,因为有人比我更有才华......

$pattern = "/(^RT)|((?<=[ ])RT)/";

答案 2 :(得分:0)

此代码可以使用

if (preg_match('/(?<=^|\s)RT(?=\s)/', $subject)) {
    # Successful match
} else {
    # Match attempt failed
}

但你提到的网站不支持这个。