遵循这个post我正在尝试相同的任务,但是下面给出的正则表达式给了我相互矛盾的结果:
$text = "Jiaaah.. RT @mizter_popo";
$pattern = "/(^|[ ])(\RT(?=\s))/";
if(preg_match($pattern, $text)) {
echo "correct";
} else {
echo "wrong";
}
我希望这能给'正确'。在我的本地服务器上的PHP脚本中运行它并here返回'错误'。运行相同的逻辑here会返回'正确'吗?任何人都可以帮助解释发生了什么?或者我希望'正确'得到回应我错了?
答案 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
}
但你提到的网站不支持这个。