0

この投稿に続いて、私は同じタスクを試みていますが、以下に示す正規表現は矛盾する結果をもたらしています:

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

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

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

私はこれが「正しい」ことを期待しています。これをローカル サーバーの PHP スクリプトで実行すると、「間違った」が返されます。ここで同じロジックを実行すると、「正しい」が返されますか? 何が起こっているのか説明できる人はいますか?それとも、「正しい」がエコーされると期待するのは間違っているのでしょうか?

4

3 に答える 3

1

私にとっては、この特定のインスタンスで両方\の作業の前に削除します。RT

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

正規表現テスターサイトが、サイトを壊さないように徹底的なサニタイズを行っている可能性があります。これにより、機能するものと機能しないものが歪む可能性があります。

于 2012-07-04T04:41:17.947 に答える
0

後読みの代わりにアサーションを使用するパターンを見つけました。交替もありますが、それは私よりも正規表現の才能のある誰かとの主張に織り込むことができるに違いありません...

$pattern = "/(^RT)|((?<=[ ])RT)/";
于 2012-07-04T04:43:42.507 に答える
0

このコードは機能します

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

しかし、あなたが言及したサイトはとにかくこれをサポートしていません。

于 2012-07-04T04:44:53.820 に答える