当前位置:  开发笔记 > 编程语言 > 正文

Java正则表达式匹配精确数量的破折号

如何解决《Java正则表达式匹配精确数量的破折号》经验,为你挑选了1个好方法。

在我类似Markdown的文本中,我想---用emdash实体替换三个破折号(),但我不想替换四个破折号.

我怎么能把它写成正则表达式?

我试过这个:

String input = "--- This---example----and--another.---";
String expected = "— This—example----and--another.—";
assertEquals(expected, input.replaceAll("-{3}", "—"));

但它给了我:

— This—example-and--another.—

而不是我想要的:

— This—example----and--another.—

我希望它能在三条破折号出现在一条线的起点或终点或任何周围的字符(除了破折号)之外时起作用 - 不仅仅是在被字母数字包围时.



1> Wiktor Strib..:

使用lookarounds确保只匹配3个破折号:

input.replaceAll("(?

请参阅正则表达式演示

(? 负回顾后发一次失败的比赛-是3个破折号之前,以及(?!-) 负向前查找,如果有一个失败的比赛-之后3个短线.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有