我试图解析一个URL字符串(我通过HTML Get方法接收)并提取嵌入的选项。我想知道为什么它会在s=s.split("?")[0];
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
public static void main(String[] args) {
String s= "run.html?yse=yse1&tracefile=capacity.1Mbps_c50.txt&fd=100&rd=100&down=1&up=1&per=0.00001";
s=s.split("?")[0]; //drops error
String ss[]=s.split("&");
//this is a class I have that receives the array of splitted options.
JavaRunEmulator j = new JavaRunEmulator(ss);
System.out.println(j.getOutput());
}
答案 0 :(得分:7)
从documentation split()
方法获取正则表达式作为输入。
public String[] split(String regex)
将此字符串拆分为给定正则表达式的匹配项。
字符?
用于标识正则表达式中的某些patterns,包括以下某些内容
贪婪的量词
X? :X,一次或根本不是不情愿的量词
X?? :X,一次或根本没有 X*? :X,零次或多次
X +? :X,一次或多次
X {N}? :X,正好n次
X {N,}? :X,至少n次 X {N,M}? :X,至少n但不超过m次占有量词
X?+:X,一次或根本不是
如果你像这样逃避字符串
s=s.split("\\?")[0];
?
不会被视为在模式中使用,而是原始字符串。