{m,n}
是通用形式的量词,正则表达式还有三个常用量词,分别是+
、?
、*
。它们的形态虽然不同于{m,n}
,功能却是相同的(也可以把它们理解为“量词简记法”)。
表2-2 常用量词
常用量词 | 等价形式 | 说明 |
---|---|---|
* | {0,} | 可能出现,也可能不出现,出现次数无上限 |
+ | {1,} | 至少出现一次,无上限 |
? | {0,1} | 至多出现一次,也可能不出现 |
在实际应用中,在很多情况下只需要表示这三种意思,所以常用量词的使用频率远高于{m,n}
。
比如说英式英语和美式英语有些单词的写法是不同的,比如traveler和traveller。如果希望“通吃”这两种写法,就要求第二个l
是“至多出现一次,也可能不出现”,正好使用量词?
。这样的情况还有很多,比如favor和favour、color和colour...
例2-4 量词?
的应用
re.search(r'travell?er', 'traveler') is not None # True
re.search(r'travell?er', 'traveller') is not None # True
例2-5 量词+
的应用
re.search(r"^<[^>]+>", "<bold>") != None # 匹配开标签
re.search(r"^</[^>]+>", "</table>") != None # 匹配闭标签
re.search(r"^<[^>]+/>", "<br/>") != None # 匹配自闭合标签
可以中正则表达式匹配双引号字符串。两个双引号之间可以没有任何字符,""也是一个合法的双引号字符串。
例2-6 量词*
的应用
re.search(r'\"[^\"]*\"', '"some"')
re.search(r'\"[^\"]*\"', '""')
表2-3 各类tag的匹配
tag分类 | 正则表达式 | 举例 |
---|---|---|
open tag | <[^/>][^>]*> |
<div> |
close tag | </[^>]+> |
</div> |
self-closing tag | <[^>/]+/> |
<br/> |
网友评论