当前位置: 首页 > 面试题库 >

java String.replaceAll正则表达式问题

张璞
2023-03-14
问题内容

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

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的匹配。



 类似资料:
  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 我正在尝试构建一个正则表达式,它接受具有以下条件的域名: 允许DNS名称(仅允许连字符、句点和字母数字字符)最多255个字符 连字符只能出现在字母之间 应该以字母开头,以字母结尾。它至少有3个字符(字母和句点必填,连字符可选)。 周期前标签的长度应为63 可能的情况: a、 b.c a-a.b 不该通过的案子 a-b q wert q wert q wert q wert q wert q wer

  • 在 OpenResty 中,同时存在两套正则表达式规范:Lua 语言的规范和 ngx.re.* 的规范,即使您对 Lua 语言中的规范非常熟悉,我们仍不建议使用 Lua 中的正则表达式。一是因为 Lua 中正则表达式的性能并不如 ngx.re.* 中的正则表达式优秀;二是 Lua 中的正则表达式并不符合 POSIX 规范,而 ngx.re.* 中实现的是标准的 POSIX 规范,后者明显更具备通用

  • 一、概述 二、匹配单个字符 三、匹配一组字符 四、使用元字符 五、重复匹配 六、位置匹配 七、使用子表达式 八、回溯引用 九、前后查找 十、嵌入条件 参考资料 一、概述 正则表达式用于文本内容的查找和替换。 正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。 正则表达式在线工具 二、匹配单个字符 . 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符; . 是元字

  • 这部分内容可以说是学习shell脚本之前必学的内容。如果你这部分内容学的越好,那么你的shell脚本编写能力就会越强。所以不要嫌这部分内容啰嗦,也不要怕麻烦,要用心学习。一定要多加练习,练习多了就能熟练掌握了。 在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模

  • 正则表达式 有些人在面对问题时,不经大脑便认为,“我知道,这里该用正则表达式”。现在他要面对两个问题了。 ——Jamie Zawinski 如果只是在字符串中进行简单的文本搜索,不要使用正则表达式,比如 string['text']。 对于简单的构建操作,使用正则表达式作为索引即可。 match = string[/regexp/] # 获取匹配的内容 first_grou