Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式之前的所有内容,包括匹配_Java_Regex - Fatal编程技术网

Java正则表达式之前的所有内容,包括匹配

Java正则表达式之前的所有内容,包括匹配,java,regex,Java,Regex,我需要正则表达式来删除匹配之前的任何文本,并包括匹配 我想删除“123S”及其之前的所有内容,我知道我可以用它来完成 string.replaceAll("^.*?(?=[123S])",""); string.replaceAll("123S",""); 但是真的想在一个表达式中实现它(在任何地方都找不到其他示例!) 更高效,更清晰,让其他人知道你在做什么。你可以使用以下工具: string.replaceAll("^.*123S",""); 删除非贪婪的?以匹配上一次出现

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

我想删除“123S”及其之前的所有内容,我知道我可以用它来完成

    string.replaceAll("^.*?(?=[123S])","");
    string.replaceAll("123S","");
但是真的想在一个表达式中实现它(在任何地方都找不到其他示例!)

更高效,更清晰,让其他人知道你在做什么。

你可以使用以下工具:

string.replaceAll("^.*123S","");
删除非贪婪的
以匹配上一次出现和
*
之前的所有内容

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

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

您不需要向前看:

"abc123Sdef123Sxyz".replaceAll("^.*?123S",""); 
如果您需要的话,这将仅替换第一次出现(输出为
defs123sxyz

如果要替换到最后的123S,只需删除
修改器:

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

输出是
xyz

我看不出这种方法有任何性能提升,也不能真正回答问题。问题不清楚,但他可能真的想要。*?这样他就可以找到第一个匹配,而不是最后一个。
"abc123Sdef123Sxyz".replaceAll("^.*123S","");