Skip to content

[Python] 正規表示法(Regular Expression)取代字串時保留關鍵字

如果在用 Python 處理字串時,我們需要匹配一個特殊的關鍵字,然後在左右側添加 HTML 的標籤,我們應該怎麼做呢?

比方說,我們要把在字串中所有的 "NICE" 兩側標上 <span style="color: red;"> 以及 </span>,來使其在 HTML 文本中呈現不一樣的顏色。

很直覺地,大家應該都會想到正規表示法(Regular Expression)吧!也譯為正則表達式…… 總之是個譯名很多的處理工具。在 Python 中可以直接呼叫原生的 re 模組來使用。

題外話,雖然 Python 的字串本身就有 .replace() 的方法,但是其似乎不支援正規表示法,所以更談不上保留關鍵字了。

那麼如果想要使用 re 來取代字串,並保留關鍵字,我們該如何做呢?


使用 \b 比對文字的邊界

在正規表示法中,其實我們可以使用 \b 來匹配文字的邊界。而若是我們匹配關鍵字左右兩側的邊界,我們便能準確地在左右兩側插入我們想要的標籤。

下面直接看個範例吧!

# coding: utf-8
import re


def main() -> None:
    text = "Today is a nice day! VERY NICE!!!"
    pattern = re.compile(r"\b(nice)\b", re.IGNORECASE)

    new_text = pattern.sub("<span style='color: red'>\\1</span>", text)
    print(new_text)


if __name__ == "__main__":
    main()


Output:

Today is a <span style='color: red'>nice</span> day! VERY <span style='color: red'>NICE</span>!!!


我們成功了!我們成功留下了關鍵字 NICE,並在左右側加入了 HTML 的標籤。

從網頁上來看,大概會呈現以下畫面:


References


Read More

Tags:

Leave a Reply