2012-04-16 25 views
2

動態I需要以檢查的響應日誌的輸出,以形成一個正則表達式。日誌文件將根據輸入始終不同。因此,我想創建一個基於輸入功能的動態正則表達式。 我可能需要在一個時間進行比較,以通過可變數量的變量,所以如何可以在「或」因子在正則表達式被插入?在正則表達式添加變量,使其在Java

是否有可能在Java中創建這樣一個正則表達式,我應該怎麼做呢?

+2

是的,這是可能的。只要使用字符串連接,儘管您可能想要將可變部分轉義爲安全。 – 2012-04-16 10:57:05

回答

3

是,正則表達式是唯一一個字符串,你可以連接你的用戶輸入不變的部分,然後從它創建一個模式。

如果你想匹配字面上的用戶輸入,你應該使用Pattern.quote("UserString")regex escape它。

實施例:

String UserInput = "Bar()"; 
String Prefix = "Foo"; 

Pattern p = Pattern.compile(Prefix + Pattern.quote(UserInput)); 

String s1 = "FooBar()"; 
String s2 = "FooBarNo"; 

String[] s = { s1, s2}; 

for (String a : s) { 
    Matcher m = p.matcher(a); 
    if (m.find()) 
     System.out.println(a + " ==> Success"); 
    else 
     System.out.println(a + " ==> Failure"); 
} 

輸出:

FooBar的()==>成功
FooBarNo ==>失敗

+0

感謝您的答覆,這是很簡單的東西,但對我來說,主要的問題是,它是沒有必要的,每個我需要添加相同數量的變量時......有時也可能是4和6有時或更多。 .. 在這種情況下做什麼? – ashfaq 2012-04-16 11:11:36

+2

@ashfaq那麼你將不得不編輯你的問題更具體,因爲我們不介意讀者。 – 2012-04-16 11:13:30

+0

ThanksMДΓΓБДLL,@ashfaq如何在循環中添加所需的所有字符串? – stema 2012-04-16 11:19:09