分裂Markdown的正则表达式(Android)

时间:2016-01-29 11:27:12

标签: java android regex regex-lookarounds lookbehind

所以我在MarkDown中有一些文本,我想将标题分成字符串数组,但包括标题之间的内容。 因此,对于以下示例:

**Header 1**Lots of text here.\n**Header 2**More and more text here..\n**Header 3** etc..

我最想得到的是一系列:

**Header 1**Lots of text here.\n
**Header 2**More and more text here..\n
**Header 3** etc..

我正在尝试的是(?< = \ * {1,10}。 \ {1,10})虽然我觉得在那里应该有类似的东西[^ * {2}]包含每个字符,但最多只包含2 *(标题的结尾)。 \ n不能保证在标题之前,所以我对如何做到这一点感到有些困惑。

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:0)

您可以尝试使用这种基于前瞻性的正则表达式进行匹配:

((?:\*\*.+?(?=\*\*|$)){2,})
  • (?=\*\*|$)是积极的先行断言,可以匹配任何文字,直到我们点击\*\*或行尾。
  • {2,}的范围将确保匹配文字中至少有两个**
  • 捕获的组#1将为您提供您感兴趣的文字

RegEx Demo

答案 1 :(得分:0)

检查一下:

(* {2} + * {2} *。?。?)(= * {2} |?$)/ GI

它获取2对**之后的所有内容以及跟随它的文本,直到找到另一个**或行尾。保持$条件以捕获最后一组是非常重要的(当你没有任何标题时)。

演示: https://regex101.com/r/fI0gV6/4