正则需要把原始字符串不被转义的条件下传递给正则模块,正则再去转义。
r r表示后面的字符串为原始字符串,防止计算机将\理解为转义字符。
<代码> r ' ^ \ \ $ 代码>首先按照原始字符串给到编译函数,正则再把<代码> r ^ \ \ $”中的代码> \ '翻译成<代码> \ 代码>
反斜杠=' \ \ ' 打印(反斜杠) regular_backslash=re.compile (r ^ \ \ $) print (regular_backslash.search (regular_backslash)
金额5.00中的<代码>。> 代码要使用<代码> \。> 代码来匹配。因为正则中<代码>。代码>匹配可以所有的字符,需要<代码> \。代码>表示点。
进口再保险 #匹配日期 date_regular=re.compile (r ' ^ (\ d {4}) - (\ d {2}) (\ d{2})美元”) print (date_regular.search (' 2017-33-12 ')) 5.00 #匹配金额比如5等金额 money_regular=re.compile (r ' ^ \ \ d {1,}。(\ d {1}) $ | ^ (\ d{1})美元”) print (money_regular.match (5.8)) #匹配纯数字 number_regular=re.compile (r ^ \ d {1,} $”) print (number_regular.search (5))
在Python普通字符串中
在Python中,我们用“来转义某些普通字符,使其成为特殊字符,比如
在[1]:打印(abc \ ndef) # ' \ n '具有换行的作用 美国广播公司 defg 在[2]:打印(abc \ tdef) # \ t的具有制位符的作用 abc defg
我们还可以用“来转义特殊字符,使其成为普通字符,比如
在[3]:打印(abc \ \ tdef) #使“\”成为一个普通的字符,没有转义作用 abc \ tdef 在[4]:打印(“abc \“tdef”) #使“成为一个普通的字符,不再需要和另一半单引号“配对 abc 'tde
所以,在python普通字符串中,我们不能以奇数个“结尾,这样会导致结束的的引号转义成一个纯字符,从而使得这段字符串没有引号来结束。
我们在字符串前加一个“r”来表示原生字符串,比如r 'abc”。原生字符串中的特殊字符的特殊含义将会被剥夺掉,如下
在[5]:打印(r 'abc \ ndefg”) # ' \ n '没有换行的作用,仅仅是一个普通的字符串 abc \ ndefg 在[6]:打印(r 'abc \ tdefg”) # ' \ t '没有制位符的作用,仅仅是一个普通的字符串 abc \ tdef
这里有一个奇怪的问题,在原生字符串中,虽然”成为了一个普通的字符串,但我们同样不能以奇数个“字符串结尾,这是因为Python正则表达式的原因,在正则表达式中我们将会解释这个问题。
Python正则表达式中会有一些不同,正则表达式中指定了一些元字符(元字符),如下。^ $ * + & # 63;{}[]\ | ()
它们都具有特殊的含义,“也属于元字符。”既属于Python中的特殊字符,也属于正则中的元字符,所以使用时得非常小心。那么在正则中,”的作用是什么呢?我们看一个例子
在[7]:re.search ('。”、“sd.f”) [7]:& lt; _sre。SRE_Match对象;跨度=(0,1),配=s比; 在[8]:re.search (‘\。”、“sd.f”) [8]:& lt; _sre。SRE_Match对象;跨度=(2、3),配='。'祝辞;[9]:re.search (“\ n”、“sdfd \ nfds”) [9]: & lt; _sre。SRE_Match对象;跨度=(4、5),配=' \ n '比; ”“” “。”作为一个元字符,它的特殊含义是匹配任意一个字符, 而当我们在其前面加“\”后,它的特殊含义消失了,匹配到的是“。”; 而且“\”依然可以把Python中某些字符转义成特殊字符。 " " "
所以,”的作用是剥夺元字符的特殊含义,使其成为一个Python字符,所以它还是会具有在Python普通字符串中的转义作用,比如“\ n”依然表示换行。所以,“既是正则中的一个元字符,又是Python中的一个特殊字符。那么我们该如何匹配到纯字符”(无任何特殊意义)?
在正则中”的作用是把元字符转义成Python字符串文字(Python字符串),所以正则中的“\”其实是其实是Python字符中”的,它仍然还具有转义作用,所以在正则中我们还得对每个“再进行转义一次,即“\ \”,这样就可以匹配到纯字符”了。看下面例子
在[10]:re.search(“\ \ \ \”,“女性性功能障碍\ nfds”) #目标字符串中没有纯字符“\”,所以匹配为空 在[11]:re.search(“\ \ \ \”,“女性性功能障碍\ \ nfds”) [11]:& lt; _sre。SRE_Match对象;跨度=(3、4),配=' \ \ '比;# Python字符串中,“\ \”就是纯字符“\”python正则表达式匹配反斜杠的操作方法