我說的Request.QueryString()爲得到URL查詢字符串 -正則表達式替換查詢參數的值
supplyId=123456789b&search=true
我想用一個新的替換值「supplyId」值。 「supplyId」可以在查詢字符串中的任何位置。可能的正則表達式是什麼?
我說的Request.QueryString()爲得到URL查詢字符串 -正則表達式替換查詢參數的值
supplyId=123456789b&search=true
我想用一個新的替換值「supplyId」值。 「supplyId」可以在查詢字符串中的任何位置。可能的正則表達式是什麼?
我實際上不會使用正則表達式來處理此操作,而是使用字符串操作。在URL中搜索「supplyId =」的位置,然後抓住所有內容,直到字符串的末尾或「&」,以先到者爲準。
如果必須使用正則表達式,請嘗試以下之一:
(?<=supplyId=)[^&]+
supplyId=([^&]+)
確認大小寫是關閉的。如果你使用第二種模式,你想要的值將在捕獲組1中。
我想你應該能夠做到像這樣:
String queryString = "supplyId=123456789b&search=true";
String anyStringIlike = "someValueIlike";
String newQueryString = queryString.replaceAll("supplyId=[^&]+","supplyId=" + anyStringIlike);
System.out.println(queryString);
System.out.println(newQueryString);
這應該打印:
supplyId = 123456789b &搜索=真
supplyId = someValueIlike &搜索= true
如果value是:'abcdsupplyId = value',會發生什麼? – djmj
在Perl中你可以做這樣的事情。
的perl -le「@m =( 「garbare = i123123123asdlfkjsaf & supplyId = 123456789b &搜索=真」=〜/ supplyId =(\ d + \ W +)& /克);對於打印@m
public static String updateQueryString (String queryString, String name, String value) {
if (queryString != null) {
queryString = queryString.replaceAll(name + "=.*?($|&)", "").replaceFirst("&$", "");
}
return addParameter(queryString, name, value);
}
public static String addParameter(queryString, name, value) {
return StringUtils.isEmpty(queryString) ? (name + "=" + value) : (queryString + "&" + name + "=" + value);
}
你叫這樣的:updateQueryString("supplyId=123456789b&search=true", "supplyId", "newValue");
輸出:search=true&supplyId=newValue
public class TestQueryStringValReplace {
public static String replace(String queryString, String propName, String newVal) {
return queryString.replaceAll(propName+"=[^&]+", propName+"=" + newVal);
}
public static void main(String[] args) {
Assert.assertEquals("supplyId=newVal&search=true", replace("supplyId=oldVal&search=true", "supplyId","newVal"));
Assert.assertEquals("supplyId=newVal", replace("supplyId=oldVal", "supplyId","newVal"));
Assert.assertEquals("search=true&supplyId=newVal&3rdprop=val", replace("search=true&supplyId=oldVal&3rdprop=val", "supplyId","newVal"));
}
}
爲什麼要使用正則表達式時,你知道你的分隔符是什麼樣子? – 2012-05-17 19:33:44