Java正则表达式-替换一个表达式,直到出现单词边界



我想删除单词"object"直到单词"date"的开头例如:blablaobjectthisisatestdateblabla

我想要这个:blabladateblabla

我试着用(.*)(object)(.*)(date)(.*)组的这个表达式来替换为$1$4$5,但它不起作用,知道吗?

如果您想从object删除到date,但不包括date,那么使用前瞻断言是一种方法:

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test
{
public static void main(String[] args) {
String s =  "blablaobjectthisisatestdateblabla";
Pattern pattern = Pattern.compile("object[\s\S]*(?=date)");
Matcher m = pattern.matcher(s);
s = m.replaceAll("");
System.out.println(s);
}
}

打印:

blabladateblabla

正则表达式:

object      # matches object
[sS]*     # matches 0 or more whitespace or non-whitespace characters (. will not match the newline)
(?=date)    # until the next characters are 'date'

参见Regex Demo

最新更新