2

伙计们,我想提取字符串中的内容,内容在“&”之前和“=”之后,就像这个例子:

asdfaf=afl10109&adsfjkl

我想从字符串中提取“afl10109”,任何人都可以教我如何做到这一点,我对正则表达式很陌生......

4

4 回答 4

8

用于replaceAll()将整个输入替换为您想要的内容:

String target = str.replaceAll(".*=(.*)&.*", "$1");

目标被捕获在一个组中(组号 1),然后在替换字符串中引用该组。

于 2013-10-21T04:41:53.840 回答
1

尝试

     public static void main(String args[]) {
          String input="asdfaf=afl10109&adsfjkl";
          Pattern pattern = Pattern.compile("=[^&]*&");
          Matcher m = pattern.matcher(input);
          while (m.find()) {
              String str = m.group();             
              System.out.println( str.substring(1,str.length()-1));
          }
      }
于 2013-10-21T04:37:34.220 回答
1

这不是regex,但您也可以使用split()

String str = "asdfaf=afl10109&adsfjkl";
System.out.println(str.split("=")[1].split("&")[0]);

输出:

afl10109
于 2013-10-21T04:39:09.130 回答
1

使用好旧的String#substring()

String str = "foo=bar&baz";
int begin = str.indexOf('=');
if (begin != -1) {
    int end = str.indexOf('&', begin);
    if (end != -1) {
        System.out.println(str.substring(begin+1, end)); // bar
    }
}
于 2013-10-21T04:43:43.617 回答