用匹配的正则表达式的一部分替换字符串

var*_*unl 10 java regex

我有一根长串.我想用匹配的正则表达式(组)的一部分替换所有匹配.

例如:

String = "This is a great day, is it not? If there is something, THIS IS it. <b>is</b>".
Run Code Online (Sandbox Code Playgroud)

我想替换所有单词"is",比如说"<h1>is</h1>".案件应与原件保持一致.所以我想要的最终字符串是:

This <h1>is</h1> a great day, <h1>is</h1> it not? If there <h1>is</h1> something, 
THIS <h1>IS</h1> it. <b><h1>is</h1></b>.
Run Code Online (Sandbox Code Playgroud)

正在尝试的正则表达式:

Pattern pattern = Pattern.compile("[.>, ](is)[.<, ]", Pattern.CASE_INSENSITIVE);
Run Code Online (Sandbox Code Playgroud)

Mic*_*ael 13

Matcher类与结合常用Pattern.使用该Matcher.replaceAll()方法替换字符串中的所有匹配项

String str = "This is a great day...";
Pattern p = Pattern.compile("\\bis\\b", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
String result = m.replaceAll("<h1>is</h1>");
Run Code Online (Sandbox Code Playgroud)

注意:使用\bregex命令将匹配单词边界(如空格).这有助于确保仅匹配单词"is"而不包含字母"i"和"s"(如"island")的单词.


Jir*_*ika 7

像这样:

str = str.replaceAll(yourRegex, "<h1>$1</h1>");
Run Code Online (Sandbox Code Playgroud)

$1指由组#1的正则表达式中捕获的文本.

  • @Michael - 如果你需要不区分大小写,只需在正则表达式的开头包含一个`(?i)`修饰符. (2认同)