小编典典

java String.replaceAll正则表达式问题

java

我有一个包含以下文本的字符串

String my_string = "hello world. it's cold out brrrrrr! br br";

我想将每个 孤立的 br 替换为<br />

问题是我想避免将字符串转换为

"hello world. it's cold out <br />rrrrr! <br /> <br />";

我想做的是将字符串(使用replaceAll)转换为

"hello world. it's cold out brrrrrr! <br /> <br />";

我敢肯定这很简单,但是我的正则表达式不正确。

my_string.replaceAll("\\sbr\\s|\\sbr$", "<br />");

我的正则表达式 应该 找到“空白”,“ b”,“ r”,“空白”或“空白”,“ b”,“ r”,“行尾”

但是它错过了我字符串中的最后一个“ br”

"hello world. it's cold out brrrrrr!<br />br"

我究竟做错了什么??TKS!


阅读 273

收藏
2020-11-30

共1个答案

小编典典

my_string.replaceAll("\\bbr\\b", "<br />");

您的正则表达式不起作用,因为

␣br␣br
^

模式\sbr\s将消耗整个␣br␣,而剩下

<br />br
      ^

现在没有br匹配的前置空格\sbr$,因此将被忽略。

另一方面,\b表示单词边界,它是零宽度的断言,即它不会消耗任何字符。因此,将保留空格,并将所有隔离br的匹配。

2020-11-30