2012-11-02 53 views
2

我有一個正則表達式,幾乎工作,它應該:)preg_replace函數替換了比賽一個額外的字符

/test[^test<]/ 

我使用prep_replace(),我希望它查找的字符串「測試」的任何事件並且在字符串爲'test <'(表示已被替換)的情況下替換爲測試。

測試文字是: 「這是一個測試這是一個測試一些試驗和測試,但測試< testowanie?」

它給了我這樣的結果: 「這是一個測試這是一個測試一些測試和測試但測試< testwanie「

所以它正確排除字符串'測試<',但與任何其他匹配替換'測試'+一個額外的字符。

任何幫助,將不勝感激。謝謝。

回答

2

方括號表示一個字符類,^表示否定該字符類。最終的結果是,你匹配之後,是不是test<

用這個代替任何一個字符序列test/test(?!<)/,匹配序列的所有出現不跟左test單書名號。

+0

這是有效的!非常感謝您的幫助。這是我第一次在這裏發佈任何東西,並沒有期待如此快速的迴應:) – doomie

+0

說太快了。發佈時我並不完全正確。是否有可能修改此正則表達式不匹配任何包含子字符串'test'並以'<'結束的單詞?現在我有一個問題,我正在用'[tag] testowanie [tag]'替換word'testowanie',並且在再次替換之後再次替換'testowanie',所以我最終得到[tag] [tag] test [tag] owanie [tag]?謝謝 – doomie

+0

只需添加一個字邊界\ b即可/ test(?!<)\ b /。現在它可以工作。再次感謝。 – doomie

相關問題