我有一个包含以下文本的字符串
String my_string = "hello world. it's cold out brrrrrr! br 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!
用
my_string.replaceAll("\\bbr\\b", "<br />");
您的正则表达式不起作用,因为
␣br␣br ^
模式\sbr\s将消耗整个␣br␣,而剩下
\sbr\s
␣br␣
<br />br ^
现在没有br匹配的前置空格\sbr$,因此将被忽略。
br
\sbr$
另一方面,\b表示单词边界,它是零宽度的断言,即它不会消耗任何字符。因此,将保留空格,并将所有隔离br的匹配。
\b