在上节的例子中,字符组中的横线-
并不能匹配横线字符,而是用来表示范围,这类字符叫做元字符(meta-character)。字符组的开方括号[
、闭方括号]
和^
、$
都算元字符。在匹配中,它们有特殊的意义。但是,有时候并不需要表示这些特殊的意义,只需要表示普通字符,此时就必须做特殊处理。
字符组中的-
,如果它紧邻着字符组的开方括号[
,那么它就是普通字符,其他情况下都是元字符;而对于其他元字符,取消特殊含义的做法都是转义,做法是在正则表达式中的元字符前加上反斜线字符\
。
如果要在字符组内部使用横线-
,最好的办法是将它排在字符组的开头。[-0-9]
表示0~9这10个数字字符和横线-
共同组成的字符组。
re.search('[-0-9]', '9') is not None # True
re.search('[-0-9]', '-') is not None # True
python提供了原声字符串(raw string),使得正则表达式不用考虑正则表达式之外的转义
re.search('[-\\^\\$]', '^') is not None # True
re.search(r'[-\^\$]', '^') is not None # True
网友评论