use*_*146 0 java regex string replaceall
我有一个包含以下文本的字符串
String my_string = "hello world. it's cold out brrrrrr! br br";
Run Code Online (Sandbox Code Playgroud)
我想替换每个隔离 BR与<br />
问题是我想避免将字符串转换为
"hello world. it's cold out <br />rrrrr! <br /> <br />";
Run Code Online (Sandbox Code Playgroud)
我想做的是将字符串(使用replaceAll)转换为
"hello world. it's cold out brrrrrr! <br /> <br />";
Run Code Online (Sandbox Code Playgroud)
我确信这很简单,但我的正则表达式是不正确的.
my_string.replaceAll("\\sbr\\s|\\sbr$", "<br />");
Run Code Online (Sandbox Code Playgroud)
我的正则表达式应该找到'空白''b''r''空白'或''空格''b''r''行尾'
但它错过了我的字符串中的最后一个"br"
"hello world. it's cold out brrrrrr!<br />br"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么??TKS!
使用
my_string.replaceAll("\\bbr\\b", "<br />");
Run Code Online (Sandbox Code Playgroud)
你的正则表达式不起作用,因为在
?br?br
^
Run Code Online (Sandbox Code Playgroud)
该模式\sbr\s将消耗整体?br?,留下
<br />br
^
Run Code Online (Sandbox Code Playgroud)
现在没有前面的空间br可以匹配\sbr$,所以它会被遗漏.
另一方面,这\b意味着一个词边界,是一个零宽度的断言,即它不会消耗任何字符.因此,将保留空间并且所有隔离br的将被匹配.