Python - ^在正則表達式中的作用


^在正則表達式中有兩個作用,一是表達以什么開頭,二是表達對什么取反。有時候經常傻傻的分不清楚,接下來給大家詳細介紹該怎么用這個^
准備一個python文件test.py,借用re.search函數舉例說明

# coding=utf-8
import re

s = ['abc-123-cba',       #'abc'在最前面
    '123-abc-aabbcc-123', #'abc'在中間
    'a-2-3-b-1',          #最前面是'a'
    'b-x-c-a-1',          #最前面是'b'
    'z-a-1',              #'a'在中間
    'x-y-z',              #字符串沒有任何'a','b','c'
    'cbaabc'              #字符串全是'a','b','c'組成
]

st = r'abc'  
for i in s:
    m = re.search(st, i)
    if m:
        print(i)


1.當st = r'abc'時,執行python文件得到的結果如下    
abc-123-cba
123-abc-aabbcc-123
cbaabc
字符串中有'abc'就匹配成功

2.當st = r'[abc]'時,執行python文件得到的結果如下    
abc-123-cba
123-abc-aabbcc-123
a-2-3-b-1
b-x-c-a-1
z-a-1
cbaabc
字符串中只要有'a'或'b'或'c',就匹配出來

3.當st = r'^abc'時,執行python文件得到的結果如下    
abc-123-cba
字符串中只有'abc'開頭的才匹配出來

4.當st = '^[abc]'時,執行python文件得到的結果如下 
abc-123-cba
a-2-3-b-1
b-x-c-a-1
cbaabc
字符串由'a'或'b'或'c'開頭的都匹配出來了

5.當st = '[^abc]'時,執行python文件得到的結果如下 
abc-123-cba
123-abc-aabbcc-123
a-2-3-b-1
b-x-c-a-1
z-a-1
x-y-z
字符串只要有除'a'和'b'和'c'的字符就都匹配出來了,這跟第三種情況是相反的   
   
總結:
'abc'表示字符串中有'abc'就匹配成功
'[abc]'表示字符串中有'a'或'b'或'c'就匹配成功
'^abc'表示字符串由'abc'開頭就匹配成功
'^[abc]'表示字符串由'a'或'b'或'c'開頭的,
'[^abc]'表示匹配'a','b','c'之外的字符。如果一個字符串是由'a','b','c'組合起來的,那就是假 

當^表示取反的時候,只有一種情況,就是在中括號里面,而且是每一個字符之外的。所以千萬不要把'[^abc]'看成是對'abc'字符串的取反。
如果想使用對'abc'字符串取反,則只能更改代碼
st = r'abc' 
for i in s:
    m = re.search(st, i)
    if not m

列舉常用的取反:
'[^a-z]' 所有小寫字母之外的字符
'[^a-zA-Z]' 所有大寫和小寫字母之外的字符
'[^0-9]' 所有數字之外的字符

如果文章有錯誤,還望您指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM