正则表达式删除两个字符之间的字符串(独占)

时间:2013-11-26 11:27:45

标签: java regex

如果我有一个字符串blah.t!@Z8-st?,如何在Java中删除字符.?之间的字符串?

因此生成的文本将为blah.?

我有以下内容,但它是包容性的:

String s = "blah.t!@Z8-st?";
System.out.println(s.replaceAll("\\..*?\\?", ""));

3 个答案:

答案 0 :(得分:1)

由于这看起来像是“编写最复杂的正则表达式”的比赛,让我提交我的适度贡献。

System.out.println("blah.t!@Z8-st?".replaceAll("\\..*?\\?", ".?"));

更新

在您编辑之后,您似乎已经拥有与我的完全相同的正则表达式,因此您唯一需要修复的是“替换为”部分,您可以在其中保留分隔符。

答案 1 :(得分:0)

您可以使用:

String repl = string.replaceAll("^(.*?\\.)[^?]*", "$1");

答案 2 :(得分:0)

字符串 replaceAll方法与以下模式一起使用:

<强>模式

(?<=\.).*(?=\?)

<强>代码

String s = "blah.t!@Z8-st?asdas";
System.out.println(s.ReplaceAll("(?<=\\.).*(?=\\?)", ""));