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

标签 java regex

我有一个长字符串。我想用部分匹配的正则表达式(组)替换所有匹配项。

例如:

String = "This is a great day, is it not? If there is something, THIS IS it. <b>is</b>".

我想替换所有单词 "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>.

我正在尝试的正则表达式:

Pattern pattern = Pattern.compile("[.>, ](is)[.<, ]", Pattern.CASE_INSENSITIVE);

最佳答案

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>");

注意:使用 \b 正则表达式命令将匹配单词边界(如空格)。这有助于确保只匹配单词“is”,而不匹配包含字母“i”和“s”的单词(如“island”)。

关于java - 用匹配的正则表达式的一部分替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865985/

相关文章:

java - 计算字符串中的行数和单词数

python - 使用 re 模块帮助在 python 中构建正则表达式

用于匹配状态的正则表达式模式

python - Django - 如何从模板中获取 {% block %} 标签的内容

java - Java中使用PreparedStatementCreator这个方法的解释是什么?

java - 如何做 “sequential” 作业调度( quartz ?)

java - 如何从 Android SDK 禁用(然后启用)短信功能

Java通过3类进行排序

regex - 在 Bash 中的一行内交换字符串

javascript - 在向前看之前只捕获最接近的匹配项