6

request.queryString()と言うことでURLからクエリ文字列を取得します-

supplyId=123456789b&search=true

「supplyId」の値を新しい値に置き換えたい。「supplyId」は、クエリ文字列の任意の位置に配置できます。これに対して可能な正規表現は何でしょうか?

4

5 に答える 5

7

これには実際には正規表現を使用しませんが、文字列操作を使用します。URL で「supplyId=」の位置を検索し、文字列の末尾または「&」のいずれか早い方まですべてを取得します。

正規表現を使用する必要がある場合は、次のいずれかを試してください。

(?<=supplyId=)[^&]+

supplyId=([^&]+)

大文字と小文字の区別がオフになっていることを確認してください。2 番目のパターンを使用する場合、必要な値はキャプチャ グループ 1 に含まれます。

于 2012-05-17T19:34:47.587 に答える
4

次のようなことができるはずだと思います:

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&search=true

supplyId=someValueIlike&search=true

于 2012-05-17T19:34:41.067 に答える
2

perlでは、このようなことができます。

perl -le '@m = ( "garbare=i123123123asdlfkjsaf&supplyId=123456789b&search=true" =~ /supplyId=(\d+\w+)&/g ); @m の印刷

于 2012-05-17T19:58:30.927 に答える
1
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

于 2012-08-24T11:21:03.510 に答える
1
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"));
   }

}

于 2017-01-08T06:37:09.860 に答える