正则表达式能够把你想要的字符从一段字符串抓出来。那它是如何做到的呢?@H_502_1@
1.要有一个匹配的字符。就是如果你想要a,你就写a,想要b,就写b。比如从‘abcdefg’里抓‘cde’,那么正则表达式就是‘cde’。简单吧。@H_502_1@
但是,如果你想要的不是个明确的,比如从‘abcd1234xyz’里面抓数字,可以使用表达匹配数字的字符\d。@H_502_1@
如下是匹配各种字符的正则表达式:@H_502_1@
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ fv]。
\S 匹配任何非空白字符;它相当于类 [^ fv]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
@H_502_1@
@H_502_1@
.表示任意字符 2 有时候正则表达式为‘aaaaa‘还可以写出来,但是可能是‘aaaaa‘或是‘aaa’,怎么办呢?那就需要重复功能的元字符了。@H_502_1@
正则表达式的元字符有. ^ $ * ? { [ ] | ( )。各种意义下面讲,@H_502_1@
* 对于前一个字符重复0到无穷次 3。下面讲讲没有提到的元字符。不愿意自己写了,copy一下,其实很好理解@H_502_1@
3. 元字符(\),元字符backslash。做为 Python 中的字符串字母,反斜杠后面可以加不同的字符以表示不同特殊意义。@H_502_1@
502_1@
>>> m=re.search("foo.$","foo1\nfoo2\n")@H_502_1@
>>> m@H_502_1@
<_sre.SRE_Match object at 0x00A27170>@H_502_1@
>>> m.group()@H_502_1@
'foo2'@H_502_1@
'foo1'@H_502_1@
>>> re.findall("a{5}","aaaaaaaaaa")@H_502_1@
['aaaaa','aaaaa']@H_502_1@
502_1@
['aaaaa']@H_502_1@
['aaaa','aaaa']@H_502_1@
>>> re.findall("a{2,4}?",207)"> 获取匹配的group,而无名称的group可以通过从1开始的group序号来获取匹配的组,如matchObject.group(1)。具体应用将在下面的group()方法中举例讲解@H_502_1@
[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系。
^ 如果放在字符串的开头,则表示取非的意思。[^5]表示除了5之外的其他字符。而如果^不在字符串的开头,则表示它本身。
元字符[^].
@H_502_1@
+对于前一个字符重复1到无穷次
?对于前一个字符重复0到1次
{m,n} 对于前一个字符重复次数在为m到n次,其中,{0,} = *,{1,} =,{0,1} = ?
{m} 对于前一个字符重复m次
@H_502_1@
@H_502_1@