網站首頁 編程語言 正文
在正則表達式中,有些字符是有特殊意義的字符。因此如果想要匹配這些字符,那么就必須使用反斜杠進行轉義。比如$代表的是以...結尾,如果想要匹配$,那么就必須使用\$。示例代碼如下:
text = "apple price is \$99,orange paice is $88"
ret = re.search('\$(\d+)',text)
print(ret.group())
>> $99
原生字符串:
在正則表達式中,\是專門用來做轉義的。在Python中\也是用來做轉義的。因此如果想要在普通的字符串中匹配出\,那么要給出四個\。示例代碼如下:
text = "apple \c"
ret = re.search('\\\\c',text)
print(ret.group())
因此要使用原生字符串(r標記)就可以解決這個問題:
text = "apple \c"
ret = re.search(r'\\c',text)
print(ret.group())
那么原理是什么呢?為什么在不使用r來標記原生字符串的時候需要四個\呢?使用r的時候需要兩個\呢?
我們需要先來了解一下正則表達式的一個匹配過程,例如 ret = re.search('\\\\c',text) 這句代碼:我們都知道 \ 字符無論是在python中還是正則表達式中都表示轉義字符,這句代碼 首先python將其解釋成 \\c(第一個和第三個\分別表示轉義,那么第二個和第四個表示普通字符\,最終即成為了\\c),接下來正則表達式拿到\\c后第一個\表示轉義,因此將最后解釋為普通的 \c 兩個字符,再去匹配的文本里比較。而使用r來標記原生字符串后,python默認解釋其為\\c三個字符,最后交由正則表達式再經過轉義后即普通的\c兩個字符。?
原生字符串這里比較繞,希望對大家有所幫助
補充:在正則表達式的使用過程中,有個小小的疑問r‘’ ,代表什么意思?
其實在《python基礎教程》中,作者已經進行了詳細的說明。
加入要匹配字符串‘python.org’,可以直接使用‘python.org’ 嗎?當然是可以的,但是不要忘記 “.” 代表通配符,此時也與‘pythonaorg’匹配。
怎么讓'.'不代表統配符呢?只要加上‘\’即可,但是為了表示模塊re要求的單個反斜杠,需要再字符串中加入兩個反斜杠,讓解釋器對其進行轉義,(這里不太理解),作者解釋為解釋器執行的轉義和模塊re執行的轉義。
如果厭煩了兩個反斜杠,只需使用r'python\.org'?
總結
原文鏈接:https://blog.csdn.net/qq_39504519/article/details/107075923
相關推薦
- 2024-03-02 Quasar框架使用環境變量聲明接口地址,無需手動判斷
- 2021-12-05 判斷網頁時瀏覽器打開還是釘釘打開
- 2022-04-20 C++入門語法之函數重載詳解_C 語言
- 2022-04-01 Failed to execute goal com.github.eirslettfrontend
- 2022-11-08 切換tab時,van-list中的onload事件沒觸發
- 2023-07-06 mac配置idea自帶的maven3環境變量
- 2022-04-11 Tomcat訪問不到web應用報錯ORA-01882: 未找到時區的解決方案
- 2022-06-08 Python使用PyYAML庫讀寫yaml文件的方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支