给定一个 Markdown 源文本:
- sometext
- sometext
followingText
- sometext
- sometext
- sometext
我想在列表范围内替换双\n\n
换行符\nWhiteSpace\n
;
所以用$1 的 JS 技术,我做到了
(- [\s\S]+?)(?:\n\n(?=\n))|(- [\s\S]+?)(?:\n\n(?=- ))
http://regex101.com/r/hO7vT9
蓝色选择是几乎可以工作的目标,除了第一个双换行符没有被选中。
这是因为(- [\s\S]+?)(?:\n\n(?=\n))
首先匹配并且(- [\s\S]+?)(?:\n\n(?=- ))
不评估。
当然,我可以恢复订单(- [\s\S]+?)(?:\n\n(?=- ))|(- [\s\S]+?)(?:\n\n(?=\n))
,那么现在
现在,第一个选择有效,但第二个选择失败。(与第一个版本相比,第二个选择的预期结果)。
有什么解决方法吗?
当然,你可以建议将正则表达式分开,替换两次;我做得很好,结果很混乱,所以我想在一个正则表达式中实现这一点。语言是JS。