Markdown:正則表達(dá)式用于查找標(biāo)題#2后面的所有內(nèi)容(但在另一個(gè)標(biāo)題#2處停止)

我有markdown個(gè)文件,有時(shí)只有一個(gè)H2,但有時(shí)也有幾個(gè):

# This is H1

Some content.

## This is a H2

Some more content.

## This is another H2

Even more content.

我正在用Ruby編寫一個(gè)方法來提取H2s的含量,例如,我想提取第一個(gè)H2的含量。為此,我們提出了以下正則表達(dá)式:

^## This is a H2\n\n(.*)\n\n##

可悲的是,這只在markdown中有另一個(gè)H2時(shí)才起作用。但我不知道如何使最后一部分\n\n##成為可選的,因?yàn)橄蛩砑右粋€(gè)?^\n## In Kürze\n\n(.*)[\n\n##]?)將使它只對markdown使用一個(gè)H2工作,但是當(dāng)有幾個(gè)H2時(shí),它將捕獲所有后續(xù)的H2s及其內(nèi)容。

我希望你明白我的意思。我只想得到一個(gè)H2的含量,不管有多少H2。

你可以在這里玩我的作品:https://rubular.com/r/JVaYHHzglxdLdK

? 最佳回答:

我相信這種模式解決了你的問題。它匹配H2節(jié)的內(nèi)容和H1/H2節(jié)開頭以及文件結(jié)尾的terminate。

/(?:^|\n)##\s[^\n]*\n(.*?)(?=\n##?\s|$)/gs
(?:^|\n)                // make sure we're at the start of a line
##\s                    // match only H2 tags
[^\n]*\n                // skip the heading name
(.*?)                   // match heading content lazily
(?=                     // use a lookahead as to not consume the next heading's start tag
   \n##?\s              // terminate at H1 and H2 headings...
   |$                   // ...or at the end of the file
)

https://regex101.com/r/PB80CH/2

啟用的標(biāo)志應(yīng)該是全局和單行的,不能使用多行模式,因?yàn)镠2s的特殊邏輯一直持續(xù)到文件結(jié)尾。

主站蜘蛛池模板: 亚洲电影唐人社一区二区| 中文字幕日韩人妻不卡一区 | 一区二区高清视频在线观看| 国产精品一区二区av不卡| 中文字幕AV一区中文字幕天堂| 午夜一区二区免费视频| 日韩毛片基地一区二区三区| 天堂Aⅴ无码一区二区三区| 国产无线乱码一区二三区 | 无码av中文一区二区三区桃花岛| 成人精品视频一区二区三区不卡| 成人无码一区二区三区| 日本一区二区三区不卡视频 | 国产精品无码一区二区三区在| 美日韩一区二区三区| 久久精品国产一区| 国产一区二区女内射| 亚洲高清一区二区三区 | 风流老熟女一区二区三区| 国产未成女一区二区三区| 无码一区二区三区AV免费| 武侠古典一区二区三区中文| 亚洲日韩国产一区二区三区| 在线精品视频一区二区| 亚洲AV无码一区二区三区性色| 高清一区二区在线观看| 久久99精品波多结衣一区| 嫩B人妻精品一区二区三区| 视频在线一区二区| 亚洲日本va一区二区三区 | 一区二区三区美女视频| 大屁股熟女一区二区三区 | 亚洲国产情侣一区二区三区| 呦系列视频一区二区三区| 综合激情区视频一区视频二区| 果冻传媒一区二区天美传媒| 亚洲一区在线观看视频| 婷婷亚洲综合一区二区| 久久精品无码一区二区app| 国产AV一区二区三区传媒| 国产情侣一区二区|