java:使用正则表达式提取子字符串
我对提取子字符串感兴趣,但我一直在为此创建正则表达式模式。我拥有的字符串数据如下:java:使用正则表达式提取子字符串,java,regex,Java,Regex,我对提取子字符串感兴趣,但我一直在为此创建正则表达式模式。我拥有的字符串数据如下: $.ajax({url:"Q" + "uestions?" + "" + "action=" + "maxim" + "um&" + "p043366329446409=08315891235072667&" + "c" + "ity="
$.ajax({url:"Q" + "uestions?"
+ "" + "action="
+ "maxim" + "um&"
+ "p043366329446409=08315891235072667&"
+ "c" + "ity="
+ k.val() + "&"
+ e + "=888",success:succFun,error:errFun,async:false});
};
我想从上面的字符串中提取p043366329446409=08315891235072667
部分。每次我向服务器发出请求时,此数据都会更改,但“p0”
将始终启动字符串,而&
将结束字符串
谢谢大家。试试这个
String p0 = s.replaceAll(".*&(p0.+?=.+?)&.*", "$1");
试试这个:
String mydata = "<query string>";
Pattern pattern = Pattern.compile("p0([0-9]+)=([0-9]+)&");
Matcher matcher = pattern.matcher(mydata);
int start=0,end=0;
if(matcher.find())
{
start=matcher.start();
end=matcher.end();
System.out.println(mydata.substring(start,end-1));
}
String mydata=”“;
Pattern=Pattern.compile(“p0([0-9]+)=([0-9]+)&”);
Matcher Matcher=pattern.Matcher(mydata);
int start=0,end=0;
if(matcher.find())
{
start=matcher.start();
end=matcher.end();
System.out.println(mydata.substring(start,end-1));
}
通过这么多的连接,你把它变成了一个字符串。为什么你不能直接使用它?@ling.s我从服务器上获取数据,所以我不能直接使用它。我只能使用正则表达式。查询参数键“p0433663294409”是否总是常量?@Braj不,它不是常量。每次我们请求数据时它都会改变。这意味着其他值是常量,而你需要此字符串中只需要动态值?我刚刚对我的问题进行了编辑,以告知字符串中没有常量,因此我们不能假设字符串将以p0433366329446409开头。对此感到抱歉。您使用的是什么s.replaceAll()?这将如何返回我所需的值?在这种情况下,它不会替换而是返回圆括号中的组1-表达式的内容,请尝试使用此字符串s=“uestions?action=maximum&p04366329446409=08315891235072667&city=“;字符串p0=s.replaceAll”(.*&(p0.+?=.+)&.*,“$1”);System.out.println(p0);适用于我您的代码只是给我字符串的第一部分,而不是“=”运算符之后。为什么使用while循环?如果此类参数不止一次出现。您可以找到匹配字符串的开始索引和结束索引,然后使用substring方法找到所需的输出。感谢Braj提供的解决方案。