Python正則表達式中的符號^和[]舉例詳解
一、正則表達式:符號^
^
在正則表達式中有兩種常見的含義,具體取決于它的位置:
1. 在字符集 [ ] 的開頭時,表示取反(negation)。
例如:
[^s]
:匹配任何非空白字符。[^a-z]
:匹配任何不在 a-z 范圍內(nèi)的字符。
2. 在字符集之外時,表示字符串的開始(anchor)。
例如:
^https
:匹配以 “https” 開頭的字符串。^\d
:匹配以數(shù)字開頭的字符串。
總結(jié):
- 在 [ ] 內(nèi):取反。
- 在 [ ] 外:字符串開始。
需要根據(jù)上下文判斷 ^ 的具體含義。
二、正則表達式:字符集[ ]
[ ]
在正則表達式中表示字符集(character set),用于匹配其中任意一個字符。下面詳細講解其具體用法和規(guī)則:
1.基本用法
字符集 [ ]
中的每個字符都是獨立的匹配選項。例如:
[abc]
:匹配a
、b
或c
中的任意一個字符。[0123456789]
:匹配任意一個數(shù)字(等價于[0-9]
)。
示例:
import re text = "a1b2c3" print(re.findall(r'[abc]', text)) # 輸出: ['a', 'b', 'c'] print(re.findall(r'[0-9]', text)) # 輸出: ['1', '2', '3']
2.取反(Negation)
如果 ^
出現(xiàn)在字符集的開頭(即 [^...]
),表示匹配不在該字符集中的任意字符。例如:
[^abc]
:匹配除了a
、b
、c
之外的任意字符。[^0-9]
:匹配非數(shù)字字符(等價于\D
)。
示例:
text = "a1b2c3!@#" print(re.findall(r'[^abc]', text)) # 輸出: ['1', '2', '3', '!', '@', '#'] print(re.findall(r'[^0-9]', text)) # 輸出: ['a', 'b', 'c', '!', '@', '#']
3.范圍(Range)
在字符集中,可以用 -
表示字符范圍(需確保 -
不在開頭或結(jié)尾,否則會被視為普通字符)。例如:
[a-z]
:匹配任意小寫字母。[A-Z]
:匹配任意大寫字母。[0-9]
:匹配任意數(shù)字(等價于\d
)。
示例:
text = "Hello World 123" print(re.findall(r'[a-z]', text)) # 輸出: ['e', 'l', 'l', 'o', 'o', 'r', 'l', 'd'] print(re.findall(r'[A-Z]', text)) # 輸出: ['H', 'W'] print(re.findall(r'[0-9]', text)) # 輸出: ['1', '2', '3']
4.特殊字符在字符集中的處理
- 普通元字符(如
*
、+
、?
)在字符集中會被視為普通字符,無需轉(zhuǎn)義。例如:[*+]
:匹配*
或+
。
- 如果需要匹配
-
或]
,需注意:-
放在開頭或結(jié)尾(如[a-]
或[-a]
)。]
放在開頭(如[]a]
)或轉(zhuǎn)義(如[\]]
)。
示例:
text = "a*b+c?d]" print(re.findall(r'[*+?]', text)) # 輸出: ['*', '+', '?'] print(re.findall(r'[]]', text)) # 輸出: [']']
5.與預(yù)定義字符類的關(guān)系
字符集 [ ]
可以實現(xiàn)類似預(yù)定義字符類(如 \d
、\w
、\s
)的功能,但更靈活:
\d
≈[0-9]
(數(shù)字)。\w
≈[a-zA-Z0-9_]
(單詞字符)。\s
≈[\t\n\r\f\v]
(空白字符)。
示例:
text = "abc123 _!@#" print(re.findall(r'\w', text)) # 輸出: ['a', 'b', 'c', '1', '2', '3', '_'] print(re.findall(r'[a-zA-Z0-9_]', text)) # 效果相同
6.與錨點^的區(qū)別
^
在字符集外表示字符串開頭(如^abc
匹配以abc
開頭的字符串)。^
在字符集內(nèi)表示取反(如[^abc]
匹配非a
、b
、c
的字符)。
示例:
text = "abc123 xyz" print(re.findall(r'^abc', text)) # 輸出: ['abc'](匹配開頭) print(re.findall(r'[^abc]', text)) # 輸出: ['1', '2', '3', ' ', 'x', 'y', 'z'](取反)
總結(jié)
[ ]
:字符集,匹配其中任意一個字符。[^...]
:取反字符集,匹配不在其中的字符。-
:在字符集中表示范圍(如[a-z]
)。- 注意與錨點
^
的區(qū)別,以及特殊字符的處理。
到此這篇關(guān)于Python正則表達式中的符號^和[]詳解的文章就介紹到這了,更多相關(guān)Python正則表達式^和[]內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas combine_first函數(shù)處理兩個數(shù)據(jù)集重疊和缺失
combine_first是pandas中的一個函數(shù),它可以將兩個DataFrame對象按照索引進行合并,用一個對象中的非空值填充另一個對象中的空值,這個函數(shù)非常適合處理兩個數(shù)據(jù)集有部分重疊和缺失的情況,可以實現(xiàn)數(shù)據(jù)的補全和更新,本文介紹combine_first函數(shù)的語法及一些案例應(yīng)用2024-01-01Python?threading和Thread模塊及線程的實現(xiàn)
這篇文章主要介紹了Python?threading和Thread模塊及線程的實現(xiàn),Python通過兩個標準庫thread和threading提供對線程的支持,threading對thread進行了封裝,具體實現(xiàn)介紹需要的朋友可以參考一下下面文章內(nèi)容2022-06-06Python處理不同接口間參數(shù)依賴的方法總結(jié)
這篇文章主要為大家詳細介紹了如何使用Python編寫接口自動化測試,以有效地處理不同接口之間的參數(shù)依賴,并提供豐富的示例代碼,希望對大家有所幫助2024-01-01python異步編程之a(chǎn)syncio低階API的使用詳解
asyncio中低階API的種類很多,涉及到開發(fā)的5個方面,這篇文章主要為大家詳細介紹了這些低階API的具體使用,感興趣的小伙伴可以學(xué)習(xí)一下2024-01-01Python實現(xiàn)定制自動化業(yè)務(wù)流量報表周報功能【XlsxWriter模塊】
這篇文章主要介紹了Python實現(xiàn)定制自動化業(yè)務(wù)流量報表周報功能,結(jié)合實例形式分析了Python基于XlsxWriter模塊操作xlsx文件生成報表圖的相關(guān)操作技巧,需要的朋友可以參考下2019-03-03pip/anaconda修改鏡像源,加快python模塊安裝速度的操作
這篇文章主要介紹了pip/anaconda修改鏡像源,加快python模塊安裝速度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03