Python正則表達(dá)式中的符號(hào)^和[]舉例詳解
一、正則表達(dá)式:符號(hào)^
^ 在正則表達(dá)式中有兩種常見的含義,具體取決于它的位置:
1. 在字符集 [ ] 的開頭時(shí),表示取反(negation)。
例如:
[^s]:匹配任何非空白字符。[^a-z]:匹配任何不在 a-z 范圍內(nèi)的字符。
2. 在字符集之外時(shí),表示字符串的開始(anchor)。
例如:
^https:匹配以 “https” 開頭的字符串。^\d:匹配以數(shù)字開頭的字符串。
總結(jié):
- 在 [ ] 內(nèi):取反。
- 在 [ ] 外:字符串開始。
需要根據(jù)上下文判斷 ^ 的具體含義。
二、正則表達(dá)式:字符集[ ]
[ ] 在正則表達(dá)式中表示字符集(character set),用于匹配其中任意一個(gè)字符。下面詳細(xì)講解其具體用法和規(guī)則:
1.基本用法
字符集 [ ] 中的每個(gè)字符都是獨(dú)立的匹配選項(xiàng)。例如:
[abc]:匹配a、b或c中的任意一個(gè)字符。[0123456789]:匹配任意一個(gè)數(shù)字(等價(jià)于[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ù)字字符(等價(jià)于\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é)尾,否則會(huì)被視為普通字符)。例如:
[a-z]:匹配任意小寫字母。[A-Z]:匹配任意大寫字母。[0-9]:匹配任意數(shù)字(等價(jià)于\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.特殊字符在字符集中的處理
- 普通元字符(如
*、+、?)在字符集中會(huì)被視為普通字符,無需轉(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)系
字符集 [ ] 可以實(shí)現(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.與錨點(diǎn)^的區(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é)
[ ]:字符集,匹配其中任意一個(gè)字符。[^...]:取反字符集,匹配不在其中的字符。-:在字符集中表示范圍(如[a-z])。- 注意與錨點(diǎn)
^的區(qū)別,以及特殊字符的處理。
到此這篇關(guān)于Python正則表達(dá)式中的符號(hào)^和[]詳解的文章就介紹到這了,更多相關(guān)Python正則表達(dá)式^和[]內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python numpy二維數(shù)組如何刪除指定行和列
本文展示了如何對數(shù)組進(jìn)行行列刪除操作,包括刪除單行、單列、多行和多列的方法,通過具體的運(yùn)行結(jié)果展示,讀者可以清晰地了解到如何在不同情況下進(jìn)行數(shù)據(jù)處理,文章內(nèi)容實(shí)用,適合需要進(jìn)行數(shù)據(jù)處理的讀者參考學(xué)習(xí)2024-09-09
Python3實(shí)現(xiàn)Excel行分級(jí)與單元格填色
這篇文章主要為大家詳細(xì)介紹了如何使用Python3實(shí)現(xiàn)Excel行分級(jí)與單元格填色功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2025-02-02
python實(shí)現(xiàn)的用于搜索文件并進(jìn)行內(nèi)容替換的類實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)的用于搜索文件并進(jìn)行內(nèi)容替換的類,涉及Python針對文件及字符串的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06
Python3中的列表,元組,字典,字符串相關(guān)知識(shí)小結(jié)
這篇文章主要介紹了Python3中的列表,元組,字典,字符串相關(guān)知識(shí)小結(jié),小編覺得挺不錯(cuò)的,分享給大家,需要的朋友可以參考下。2017-11-11
Python?pass函數(shù)使用及其應(yīng)用的詳解
Python中,pass是一種空語句,即不做任何事情,只起到占位符的作用,本文主要介紹了Python?pass函數(shù)使用及其應(yīng)用的詳解,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Python+OpenCV圖像處理——實(shí)現(xiàn)輪廓發(fā)現(xiàn)
這篇文章主要介紹了Python+OpenCV實(shí)現(xiàn)輪廓發(fā)現(xiàn),幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下2020-10-10
使用Python一鍵實(shí)現(xiàn)屏幕監(jiān)控軟件
這篇文章主要為大家詳細(xì)介紹了如何使用Python一鍵實(shí)現(xiàn)屏幕監(jiān)控軟件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08

