2012-02-18 81 views
2

我有一種情況,源字符串可以是一切,並超出了用戶控制。 用戶可以提供正則表達式和替換值,以將源字符串替換爲想要獲得所需結果字符串的任何內容。 問題是,用戶應該能夠提供具有特定替換的正則表達式組
例如: 如果sourcestring =「1」,那麼用戶可以創建一個正則表達式,用「on」替代它,但在相同當sourcestring =「2」時,它被替換爲「off」,其他任何內容都被替換爲「N/A」。 在代碼中,我可能會做類似 sourcestring.replace(「([1])|([2])」,($ 1.equals(「1」))?「on」:($ 2.equals(「2 「)?」off「:」N/A「)); 但替換的第二個操作數應該是用戶選擇的字符串,也可以包含這些條件。 有沒有辦法做這種手術?在java中正則表達式條件替換,但在替換字符串不在正則表達式本身

+0

所以...爲什麼不能有多個表達/替換對?然後,您可以運行每個替代品,如果匹配,則替換它。如果不匹配,也許下一個匹配。不過,我可能會誤解這個問題。 – FakeRainBrigand 2012-02-18 16:20:19

+0

,因爲輸入來自一個web表單,我只想要1個字段的正則表達式和一個替換值。當然,我已經考慮從替換字符串(例如;分隔)開始創建一個數組,並且使用數組中的第一個值來更改$ 1,但這並沒有理想化 – rde01 2012-02-18 16:27:01

回答

0

您可以設置自定義標記。

讓用戶提供捕獲組和每個組的替換值。例如,

「你好,世界,你好嗎?」

(Hello\W+World\W+)\s*(how\sare)\s*(you.*) 

1 = Yo, man, 
2 = sup 
3 = yo? 

然後編寫支持java代碼。