正则表达式 note

             字符:\.^$?+*{}[]()|

.                    1. 匹配(除了换行符以外)任何'单个'的字符甚至是它本身,      \.转义代表一定是它本身 

[和]                2.1 匹配该集合的任意一个成员:经常用于不区分字符大小写 [Rr]eg[Ee]x 可以匹配regex/RegEx

                      2.2 [0-9]匹配0~9任何一个 ,[A-Z]匹配A~Z任意一个,[a-z],[A-Za-z0-9]

                      2.3 注意-只用在和字符之间,在字符集合之后,只能与-它本身相匹配,不是特殊字符 不需要转义 

                      2.4 和中取非,[^0-9]匹配任何一个不是数字的字符 ,

                             注意:^的效果将作用于给定字符集合里的所有字符或区间,不仅是后面的一个 

                       2.5  myarray[0]只能匹配到myarray0而不是myarray[0],因为[,],是元字符,需要转义myarray\[0\]

                             元字符在[]里面不需要转义,有和特殊的/的转义序列\/在括号里要用,$也需要转义 

空白元字符       3.1   [\b]回退(并删除)一个字符

                                \f 换页    \n换行    \r回车    \t制表     \v垂直制表符

                        3.2  \r\n匹配一个'回车+换行'

类元字符           4.1      \d任何一个数字字符[0-9],    \D任何一个非数字字符 [^0-9]

                         4.2     \w任何一个字母(大小均可),数字,下划线[a-zA-Z0-9_]          \W与之相反 

                         4.3      \s任何一个空白字符串 [\f\n\r\t\v]            \S与之相反

                         4.4    POSIX字符类(先略过)

重复匹配           5.1    +(匹配前面的一个字符至少一次

                               注意歧义:[0-9]+代表0-9重复多次    [0-9+]代表匹配0-9或者+(+号是元字符,但在括号里面不是

                        5.2      *(匹配前面的一个字符0次或多次,可有可无)(*是元字符

                        5.3       ?(匹配前面的一个字符0次或者1次)(?是元字符)https?是个好选择

                        5.4      {和}是元字符,记得像[和]一样的转义 

                                    {6}重复6次             {2,4}至少重复2次,至多重复4次

                                    {3,}至少重复三次

                       5.5    懒惰匹配(尽可能少的匹配)与贪婪匹配防止过度匹配,见48页例子

                                *(贪婪) ----------   *?(懒惰)

                               +(贪婪)------------+?(懒惰)

                               {n, }(贪婪)------------{n, }?(懒惰) 


位置匹配          6.1   单词边界 \b(用来匹配一个单词的开头或结尾)

,                              \b匹配的是这样一个位置:位于\w和\W之间(字母数字下划线和非字母数字下划线的一个位置

                               \b匹配的是一个位置 不匹配任何字符 

                               cap\b:以cap结尾的单词(p满足\w,空格满足\W,而\b在他们之间)

                              \bcap:以cap开头的单词    \bcap\b:单词cap

                               \B代表非单词边界(即字母数字下换线和字母数字下划线之间的位置、非字母数字下划线和非。。的位置)

                               \B-\B匹配 ( - )前面空格\W,后面-,\B在他们之间

                               \<只匹配单词的开头 ;\>只匹配单词的结尾

                          6.2   字符串边界 :字符串开头^,字符串结尾$  

                                                    ^\d表示必须以数字开头。\d$表示必须以数字结尾 

                                注意^的多种用法,[^....]只有这种情况下代表求非

子表达式            7.1   用(和),将里面的视为一个独立元素,(和)是一个元字符 记得处理

                          7.2    |代表或   19|20匹配19或20

                          7.3  在python中()代表一个分组,只显示分组的内容(注意()里面第一个位置不能有?)

回溯引用             8.1 回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式\1代表第一个子表达式,\2第二个。。

                                子表达式用()括起来

前后查找             9.1向前查找:必须匹配但不在结果中返回的模式   ?=(查找出现在被匹配文本之后的字符(但不消费))

                               比如.+(?=:)   子表达式匹配:但是只需要匹配就可以了不需要再结果显示

                           9.2 向后查找:查找出现在被匹配文本之前的字符(但不消费)?<=

                               比如(?<=\$)[0-9.]+  匹配$不显示本来的$60.66显示60.66

                            9.3前后结合 :

                             9.4 对前后查找取非: !代替=

                               (?=)--------------------(?!)正负向前查找

                               (?<=)---------------------(?<!)   正负向后查找


嵌入条件              10.1 回溯引用条件

                                  (\()?\d{3}(?(1)\)|-)\d{3}-\d{4}

                                   (\()?匹配一个可有可无的(,     (?(1)\)\-)代表如果前面的(匹配,则必须匹配)否则-

                            10.2 前后查找条件 

                                   \d{5}(?(?=-))-\d{4})

                                  如果\d{5}出现了-在后面要匹配-\d{4}


?前面有内容代表匹配可有可无,(?。。。)后面有东西代表条件匹配,?前面有+,*,{}代表懒惰匹配



在python中的new

( … ) 被括起来的表达式作为一个分组. findall 在有组的情况下只显示组的内容  'a123d' >>>'a(123)d' >>>结果为:'123'
(?#...) 注释,忽略括号内的内容  特殊构建不作为分组  'abc123' >>>'abc(?#fasd)123' >>>结果为:'abc123'
(?= … ) 表达式’…’之前的字符串,特殊构建不作为分组 在字符串’ pythonretest ’中 (?=test) 会匹配’ pythonre ’
(?!...) 后面不跟表达式’…’的字符串,特殊构建不作为分组 如果’ pythonre ’后面不是字符串’ test ’,那么 (?!test) 会匹配’ pythonre ’
(?<= … ) 跟在表达式’…’后面的字符串符合括号之后的正则表达式,特殊构建不作为分组 正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def ’
(?:) 取消优先打印分组的内容 'abc' >>>'(?:a)(b)' >>>结果为'[b]'
?P<> 指定Key 'abc' >>>'(?P<n1>a)>>>结果为:groupdict{n1:a}

                                   

                  






猜你喜欢

转载自blog.csdn.net/kylin_learn/article/details/80931982