在我类似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.—
我希望它能在三条破折号出现在一条线的起点或终点或任何周围的字符(除了破折号)之外时起作用 - 不仅仅是在被字母数字包围时.
使用lookarounds确保只匹配3个破折号:
input.replaceAll("(?请参阅正则表达式演示
该
(? 负回顾后发一次失败的比赛
-
是3个破折号之前,以及(?!-)
负向前查找,如果有一个失败的比赛-
之后3个短线.