正则表达式替换字符串上的所有内容

时间:2014-03-08 08:23:20

标签: java regex

假设我有一个字符串:

ASDF / DFA / FDS?ADSF

我希望能够获得字符串:asdf?adsf

所以基本上我想解析从第一个'/'到'?'的所有内容。

我尝试过它(见下面的例子),但我无法让它起作用:

s = s.replaceAll("\\/([?]*)", "");

3 个答案:

答案 0 :(得分:2)

您应该将其更改为:

s = s.replaceAll("/.*(?=\\?)", "");

(?=\\?)是一个预示,意思是“下一个字符是文字​​?”。 (仅供参考,未转义,?在正则表达式中具有特殊含义。)


但是,您没有提到如果有多个?会发生什么。上面的正则表达式将匹配到最后一个。

如果你想匹配到第一个,

s = s.replaceAll("/.*?(?=\\?)", "");

额外的?导致重复匹配“不情愿”。

答案 1 :(得分:1)

试试这个

String s = "asdf/dfa/fds?adsf".replaceAll("/.*(?=\\?)", "");

答案 2 :(得分:1)

这应该可以解决问题

replaceAll("/[^?]*", "")

/[^?]*会匹配其后的第一个/和所有non-?个字符。