我有一根长串.我想用匹配的正则表达式(组)的一部分替换所有匹配.
例如:
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)
注意:使用\b
regex命令将匹配单词边界(如空格).这有助于确保仅匹配单词"is"而不包含字母"i"和"s"(如"island")的单词.
像这样:
str = str.replaceAll(yourRegex, "<h1>$1</h1>");
Run Code Online (Sandbox Code Playgroud)
该$1
指由组#1的正则表达式中捕获的文本.