動態I需要以檢查的響應日誌的輸出,以形成一個正則表達式。日誌文件將根據輸入始終不同。因此,我想創建一個基於輸入功能的動態正則表達式。 我可能需要在一個時間進行比較,以通過可變數量的變量,所以如何可以在「或」因子在正則表達式被插入?在正則表達式添加變量,使其在Java
是否有可能在Java中創建這樣一個正則表達式,我應該怎麼做呢?
動態I需要以檢查的響應日誌的輸出,以形成一個正則表達式。日誌文件將根據輸入始終不同。因此,我想創建一個基於輸入功能的動態正則表達式。 我可能需要在一個時間進行比較,以通過可變數量的變量,所以如何可以在「或」因子在正則表達式被插入?在正則表達式添加變量,使其在Java
是否有可能在Java中創建這樣一個正則表達式,我應該怎麼做呢?
是,正則表達式是唯一一個字符串,你可以連接你的用戶輸入不變的部分,然後從它創建一個模式。
如果你想匹配字面上的用戶輸入,你應該使用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 ==>失敗
是的,這是可能的。只要使用字符串連接,儘管您可能想要將可變部分轉義爲安全。 – 2012-04-16 10:57:05