假设我有一个字符串:
ASDF / DFA / FDS?ADSF
我希望能够获得字符串:asdf?adsf
所以基本上我想解析从第一个'/'到'?'的所有内容。
我尝试过它(见下面的例子),但我无法让它起作用:
s = s.replaceAll("\\/([?]*)", "");
答案 0 :(得分:2)
您应该将其更改为:
s = s.replaceAll("/.*(?=\\?)", "");
(?=\\?)
是一个预示,意思是“下一个字符是文字?
”。 (仅供参考,未转义,?
在正则表达式中具有特殊含义。)
但是,您没有提到如果有多个?
会发生什么。上面的正则表达式将匹配到最后一个。
如果你想匹配到第一个,
s = s.replaceAll("/.*?(?=\\?)", "");
额外的?
导致重复匹配“不情愿”。
答案 1 :(得分:1)
试试这个
String s = "asdf/dfa/fds?adsf".replaceAll("/.*(?=\\?)", "");
答案 2 :(得分:1)
这应该可以解决问题
replaceAll("/[^?]*", "")
/[^?]*
会匹配其后的第一个/
和所有non-?
个字符。