Java Regex以前的一切和包括匹配

时间:2011-12-02 15:24:51

标签: java regex

我需要正则表达式来删除匹配前的任何文本并包含匹配

例如。我想删除“123S”及其前面的所有内容,我知道我可以用

执行此操作
    string.replaceAll("^.*?(?=[123S])","");
    string.replaceAll("123S","");

但是真的想在一个表达式中做到这一点(在任何地方找不到另一个例子!)

4 个答案:

答案 0 :(得分:4)

你可以用:

string.replaceAll("^.*123S","");

删除非贪婪的?以匹配上次发生的事件和.*之前的一切。

答案 1 :(得分:4)

你不需要展望未来:

"abc123Sdef123Sxyz".replaceAll("^.*?123S",""); 

如果您需要(输出为def123Sxyz),则仅替换第一个出现。

如果您想要替换最后的123S,只需删除?修饰符:

"abc123Sdef123Sxyz".replaceAll("^.*123S","");

输出为xyz

答案 2 :(得分:2)

string.replaceAll("^.*?123S", "");

(?=是您不想要的“if follow by”模式,[123S]甚至不正确,例如它只会捕获'2'。

答案 3 :(得分:0)

string.replaceAll("^.*?123S","");

提高效率并提高清晰度,让别人知道你在做什么。