正則表達解析 Markdown 語法

2021-09-12 03:35:36 字數 3421 閱讀 5037

原文連線

源於本部落格開發實現需要

在首頁列表需要對文字進行擷取,需要擷取第一張markdown 語法的url。

在文章詳情頁以及關於文章展示的頁面。需要對文章內容進行擷取。填充headdescription。利於seo優化

markdown 是一種可以使用普通文字編輯器編寫的標記語言,通過簡單的標記語法,它可以使普通文字內容具有一定的格式。

真實場景以及功能需求

文章編寫

文章列表預覽

頭部描述擷取

需要做的事情是將文章markdown 語法的字串,對特定的語句進行過濾。只顯示文章正文部分

文章編寫存入資料庫是字串型別

在訪問某篇文章後台會去資料庫中取對應的文章資料。

然後通過匹配將markdown 語法的字串轉義成html元素字元渲染輸出

'# 一級標題\r\n## 二級標題\r\n##### 五級標題\r\n- 列表第一項\r\n- 列表第二項\r\n1. 有序列表第一項\r\n2. 有序列表第
現在需要做的是將這些字元去掉不想要的,提取內容部分

在使用正規表示式解析 markdown 語法之前,我們要先對正規表示式的規則有乙個基本的認識,下面我整理了一張正規表示式語法對照表。

正規表示式預定義類:字元

含義.除了回車符和換行符之外的所有字元,等價於[^\r\n]

\d數字字元,等價於[0-9] digit

\d非數字字元,等價於[^0-9]

\s空白符,等價於[\t\n\x0b\f\r] space

\s非空白符,等價於[^\t\b\x0b\f\r]

\w單詞字元(字母,數字,下劃線),等價於[a-za-z_0-9] word

\w非單詞字元,等價於[^a-za-z_0-9]

邊界字元

含義^以***開始

$以***結束

\b單詞邊界

\b非單詞邊界

量詞字元

含義?出現零次或一次(最多出現一次)

+出現一次或多次(至少出現一次)

*出現零次或多次(任意次)

出現n次

出現n到m次

至少出現n次

標題(表示以乙個或多個「#」開頭的字串,並且「#」之後有0個或以上的字元,如:「### **標題」)。

^

(#+)(.

*)

鏈結 (在 markdown 語法中鏈結的表示形式為[鏈結](url)。)。

/\[[\s\s]*?\]\([\s\s]*?\)/g
解釋:

匹配[符 開始

緊接著[\s\s]範圍類 空白符或者非空白符都可以的類。

*代表出現0次或者無限次

?非貪婪模式

讓正規表示式盡可能少的匹配,也就是說一旦匹配成功匹配不再繼續嘗試,就是非貪婪模式。

做法很簡單,在量詞後面加上?即可。

斜體(表示以乙個 * 或者 _ 開頭並結尾(\1表示規則和第乙個集合相同),中間包含0個或多個字元的字串)。

(\\*

|_)(.*

?)\\1

!\\[

[^\\]

]+\\]\\(

[^\\)

]+\\)

粗體(同斜體)

(\\*\\*

|__)(.

*?)\\1

刪除線(刪除線)

\\~\\~(.

*?)\\~\\~

引用塊

\n

(>

|\\>)(.*)

內聯**塊

`[^`](

.*?)`

分割線

^

-+$

*```*包圍的**塊

``

`([\\s\\s]*?)`

``[\\s]

?

無序列表

^

[\\s]*[

-\\*\\+]+

(.*)

有序列表

^

[\\s]*[

0-9]

+\\.(.

*)

function

abstractfn

(res)

else

[^`](.*?)`/g,''

)//全域性匹配內聯**塊

.replace

(/```([\s\s]*?)```[\s]*/g,''

)//全域性匹配**塊

.replace

(/\~\~(.*?)\~\~/g,''

)//全域性匹配刪除線

.replace

(/[\s]*[-\*\+]+(.*)/g,''

)//全域性匹配無序列表

.replace

(/[\s]*[0-9]+\.(.*)/g,''

)//全域性匹配有序列表

.replace

(/(#+)(.*)/g,''

)//全域性匹配標題

.replace

(/(>+)(.*)/g,''

)//全域性匹配摘要

.replace

(/\r\n/g,""

)//全域性匹配換行

.replace

(/\n/g,""

)//全域性匹配換行

.replace

(/\s/g,""

)//全域性匹配空字元;

return str.

slice(0

,155);

}}

Python 正規表示式學習(二)正規表示式語法

一,單一字元匹配 1 匹配任意字元 import re res re.match r a.abcd print res.group 列印結果 abc一點.表示匹配任意的字元。上面的 表示匹配a後面的任意兩個字元。必須從a開始。若寫成 b.則會發生錯誤。2 匹配指定字元 如 0 9a za z 表示 ...

正規表示式解析

正規表示式,又稱正規表示式,常規表示式,是使用單個字串來描述.匹配一系列符合某個句法規則的字串,在很多文字編輯器中,正規表示式通常被用來檢索.替換那些符合某個模式的文字.正規表示式的語法可以自行搜尋,通常分為一下幾個方面 1 字元 可以使用普通字元匹配,例 a 使用預定義字元表示給定範圍中的某個字元...

正規表示式解析

string finalsql table23 select from table where id 10 matcher m pattern.compile a za z w a za z matcher finalsql if m.find 正規表示式實現的功能是實現分組,將finalsql的左...