Last Updated on 2022-08-17 by Clay
如果在用 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
- Python Regex Replace Pattern in a string using re.sub()
- How do I write a regex to replace a word but keep its case in ...