Py正则表达式学习笔记:特殊字符——中括号表达式、限定符表达式
中括號表達式的核心作用是表示范圍。有三種用法
(1)區(qū)間范圍
[a-z]表示所有小寫字母
[A-Z]表示所有大寫字母
[0-9]表示數(shù)字
比固定表達式\w、\d更加靈活,可以調(diào)整范圍
例子演示:驗證用戶名開頭只能是數(shù)英文大小寫字母
import retext = "┊ ╋。Máì葬"regex = r'^[a-zA-Z0-9]' matchObj = re.search(regex, text) if matchObj:print('用戶名 ' + text + ' 合法') else:print('用戶名 ' + text + ' 不合法')(2)可枚舉的范圍
[A4j7]表示文本可以匹配到中括號內(nèi)的任意一個字符。等同于a|4|j|7
[0,5-9]這是區(qū)間與枚舉的混合用法,表示數(shù)字0、5、6、7、8、9
[2,4]枚舉數(shù)字時要用逗號分開,否則系統(tǒng)不知道是2和4,還是24
例子演示:驗證用戶名的開頭只能是數(shù)字、英文大小寫字母、下劃線、中劃線、|
import retext = "┊ ╋。Máì葬"regex = r'^[a-zA-Z0-9_-┊]' matchObj = re.search(regex, text) if matchObj:print('用戶名 ' + text + ' 合法') else:print('用戶名 ' + text + ' 不合法')(3)排除范圍
在中括號中,用^來排除指定的范圍。其實是表達非的含義
[^a4j7]:表示除了a4j7之外的任意字符
[^E-G]:表示除了EFG之外的任意字符
^在中括號中表示排除,否則表示文本開頭,不要混淆了。
例子演示:驗證用戶名的開頭不能是數(shù)字、下劃線、中劃線、|
2.限定符表達式
(1)一般限定符
1???:表示前面的子表達式可以出現(xiàn)零次或一次
例如:go?d可以匹配gd,可以匹配god,但不能匹配good
2??+:表示前面的子表達式可以出現(xiàn)一次或多次(大于等于1次)
例如:go+d不可以匹配gd,可以匹配god,可以匹配good
3??*:表示前面的子表達式可以出現(xiàn)任意次
例如:go可以匹配g,可以匹配go,也可以匹配goo
(2)范圍限定符
正則表達式支持在{}大括號中指定匹配次數(shù)的范圍
1??{n}:n是一個非負整數(shù)。匹配確定的n次
例如:”o{2}”不能匹配”Bob”中的”o”,但是能匹配”food”中的兩個o
2??{n,}:n是一個非負整數(shù)。至少匹配n次
例如:”o{2,}”不能匹配”Bob”中的o,但是能匹配”foooood”中所有的o。”o{1,}”等價于”o+”。”o{0,}”等價于”o”
3??{n,m}:m和n均為非負整數(shù),其中n<=m。表示最少匹配n次且最多匹配m次。
代碼演示:驗證用戶名的長度至少4位,最長16位,僅支持字母、數(shù)字、下劃線、中劃線
import retext = "luBan-2019"regex = r'^[a-zA-Z0-9_-]{4,16}$' matchObj = re.match(regex, text)if matchObj:print('用戶名 ' + text + ' 合法') else:print('用戶名 ' + text + ' 不合法')總結(jié)
以上是生活随笔為你收集整理的Py正则表达式学习笔记:特殊字符——中括号表达式、限定符表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 劳动派遣【1】
- 下一篇: ANSYS 2022R1 Fluent