假设我有一个字符串:
asdf/dfa/fds?adsf
我希望能够获取字符串:asdf?adsf
所以本质上我想解析从第一个“/”到“?”的所有内容。
我尝试用它进行实验(参见下面的示例),但我无法让它工作:
s = s.replaceAll("\\/([?]*)", "");
最佳答案
您应该将其更改为:
s = s.replaceAll("/.*(?=\\?)", "");
(?=\\?)
是一个前瞻,表示“下一个字符是文字 ?
”。 (仅供引用,未转义, ?
在正则表达式中具有特殊含义。)
但是,您没有提到如果有多个 会发生什么?
。上面的正则表达式将匹配到最后一个。
如果你想匹配到第一个,
s = s.replaceAll("/.*?(?=\\?)", "");
多余的?
导致重复匹配变得“不情愿”。
关于java - 字符串上的正则表达式replaceAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22266952/