2012-02-14 5 views
0

次の文字列と正規表現考えてみましょう:は、正規表現は、より具体的な確認 - 唯一の「VB」を選択し、ないバリエーション(「VBの%」)

$string= "just/RB convinced/VBN closing/VBG 10dma/NN need/VBN see/VB"; 
echo preg_replace("/(\w+)\/(JJ|RB|VB)/", "not$1/$2", $tweet); 

を私は/ JJ終わるすべての単語には「ない」連結します、/ RBまたは/ VB。しかし、正規表現は/ VB:/ VBNと/ VBGのバリエーションもキャプチャします。出力は

notjust/RB notconvinced/VBN notclosing/VBG 10dma/NN notneed/VBN notsee/VB 

しかし、予想される出力があるさ:

notjust/RB convinced/VBN closing/VBG 10dma/NN need/VBN notsee/VB 

私はそこにバリエーションをつかんから正規表現を停止することができますどのように?

答えて

5

使用して、\bword boundary

$string= "just/RB convinced/VBN closing/VBG 10dma/NN need/VBN see/VB"; 
echo preg_replace("/(\w+)\/(JJ|RB|VB)\b/", "not$1/$2", $tweet); 

\bのみ英数字と英数字以外の文字または文字列の開始/終了のいずれかの間で一致しました。