繁体   English   中英

java String.replaceAll正则表达式问题

[英]java String.replaceAll regex question

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

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!

采用

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

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

␣br␣br
^

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

<br />br
      ^

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

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

"hello world. it's cold out brrrrrr!<br />br"最后一个“ br”前面没有空格。 应该发生什么事?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM