功能 | 正則 | 示例 |
---|---|---|
保存子組 | (正則) | \d{15}(\d{3})? |
不保存子組 | (?:正則) | \d{15}(?:\d{3})? |
我們之前講過的 IPv4 正則表示就可以優化下:
上面講完了分組,我們來看下如何來引用分組,大部分語言都是用 反斜杠 + 編號 的方式,個別的比如 JavaScript語言,使用的是 美元符號 + 編號 的方式:
編程語言 | 查找時引用方式 | 替換時引用方式 |
---|---|---|
Python | \number 如 \1 | \number 如 \1 |
Go | 官方包不支持 | 官方包不支持 |
Java | \number 如 \1 | $number 如 $1 |
JavaScript | $number 如 $1 | $number 如 $1 |
PHP | \number 如 \1 | \number 如 \1 |
Ruby | \number 如 \1 | \number 如 \1 |
到這里我們已經學完了分組與引用的知識,一起來實踐下,有這樣一個需求,在一個目標字符串中,查找兩個重復出現的單詞。
還沒有學到單詞邊界,我們先用 \w{2,} 來表示出現的單詞,重復的單詞就是 (\w{2,} \1),看下結果:
上面的內容,我們講到了日期的分組,來替換下:
對應的 Python 代碼如下:
import re test_str = "2021-06-01 13:14:21" regex = r"((\d{4})-(\d{2})-(\d{2})) ((\d{2}):(\d{2}):(\d{2}))" subst = r"\2年\3月\4日 \6時\7分\8秒" result = re.sub(regex, subst, test_str) print(result) 輸出:2021年06月01日 13時14分21秒
正則表達式不僅可以在代碼中使用,在文本編輯器中也是比較常用的,以 Sublime Text 3 舉例來講下正則的查找與替換,學完之后,會讓你的工作事半功倍。
點擊 Find -> Find 選項,或者使用快捷鍵 Ctrl + F 可以喚起查找功能:
點擊 Find -> Replace 選項,或者使用快捷鍵 Ctrl + H 可以喚起替換功能:
我們來實現一個查找郵箱的功能,此處的郵件正則只是簡單演示使用,當點擊 Find All 按鈕后,可以看到郵箱都被找到了,此時如果點擊 Ctrl + C 復制,可以把找到的郵箱單獨粘貼出來:
演示下我們上面講過的替換例子:
怎么樣,是不是很方便,幾乎所有的主流編輯器都是支持正則的,學會了正則,對我們的工作幫助還是挺大的。
最后在總結下上面講到的內容:
正則表達式在線校驗工具:https://regex101.com/
到此這篇關于正則表達式分組與引用的使用的文章就介紹到這了,更多相關正則表達式 分組與引用內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
上一篇:正則表達式量詞與貪婪的使用詳解
下一篇:正則表達式常見的4種匹配模式小結