亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Markdown 段落標記正則表達式

Markdown 段落標記正則表達式

郎朗坤 2023-05-25 17:17:35
我正在尋找可以支持以下測試用例的正則表達式:This shouldall beone match#this should not match1. nor this> nor thisthis should be a second match所以我可以將這兩個匹配項包裝在 <p> 標記中。但是,我被困在換行符上:兩個應該打破比賽,但一個換行符不能。這是我最接近的:(^[A-z].+)這正確地抓取了所有需要的文本,但形成了四個匹配而不是所需的兩個。關于正則表達式感謝您的時間。
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

您可以使用

/^[A-Za-z].*(?:\n[A-Za-z].*)*/gm

請參閱正則表達式演示

細節

  • ^- 一行的開頭(由于m修飾符)

  • [A-Za-z]- 一個 ASCII 字母

  • .*- 該行的其余部分

  • (?:\n[A-Za-z].*)*- 零個或多個以 ASCII 字母開頭的行。


查看完整回答
反對 回復 2023-05-25
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

這不是您可以使用單個正則表達式完成的事情。雖然某些 Markdown 實現確實使用正則表達式作為解析 Markdown 的主要工具,但它們使用一系列表達式來這樣做(參見原始實現,markdown.pl例如)。

例如,您可能有一個匹配標題的表達式、一個匹配列表項的表達式、一個匹配塊引號的表達式和一個匹配任何文本塊的表達式。這些表達式中的每一個都將依次針對輸入運行。但是,在運行最后一個表達式時,系列中的前一個表達式已經消耗了各種其他元素。因此,匹配段落的最終表達式不需要考慮標題、列表或塊引用的匹配。

事實上,如果您要從 中刪除標頭表達式markdown.pl,那么所有標頭都將簡單地包裝在<p>標簽中,而散列 ( #) 仍包含在文本中。

我的意思是你需要實現一個完整的 Markdown 解析器。但是,已經存在許多實現。您可能最好使用一個已經存在的。事實上,大多數現代實現生成抽象語法樹 (AST) 而不是進行正則表達式替換(正如另一個答案中指出的那樣)。



查看完整回答
反對 回復 2023-05-25
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

像 Markdown/Commonmark 這樣的語法不能 [easily, if at all] 用正則表達式解析。

使用適當的解析器來生成您可以操作的 AST。

查看完整回答
反對 回復 2023-05-25
  • 3 回答
  • 0 關注
  • 311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號