2012-07-04 26 views
0

匹配的特定字符在此之後post我試圖相同的任務,但是正則表達式如下是給我矛盾的結果:用空格或沒有前面的正則表達式

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

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

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

我希望這個給「正確的」 。在我的本地服務器的一個PHP腳本中運行這個,並且here返回'錯誤'。運行相同的邏輯here返回'正確'?任何人都可以幫助解釋發生了什麼?或者,也許我錯誤地期待'正確'被迴應?

回答

1

對於我來說,除去在這個特定實例的RT作品在兩個前\

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

這是可能的正則表達式測試儀現場正在做一些沉重的環境衛生,確保人們不要傷了他們的網站,這可能會歪曲什麼有效,什麼不可行。

+0

完美!我應該已經意識到一個在線測試人員會這樣做。謝謝! – djderek

0

我發現了一個使用斷言而不是後視的模式。有交替爲好,但我敢打賭,可以計入斷言與別人多一點正則表達式比我有才華......

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

啊我從這個角度沒有想過。謝謝 – djderek

0

此代碼將工作

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

但你提到的網站不支持這個。

+0

也不錯 - 我真的需要改進我的正則表達式! – djderek

相關問題