zoukankan      html  css  js  c++  java
  • python之正则表达式

    1)

    用管道符号(|)匹配多个正则表达式

    举例 

    at | home     匹配 at, home

    2)

    匹配任意一个单个的字符(.)

    举例

    f.o  匹配在“f”和"o"中间的任何字符,如fao, f9o, f#o等

    3)

    从字符穿的开头或结尾或单词边界开始匹配(^/$/B)

    匹配的模式是一个单词边界,与之对应的模式一定在一个单词的开头;

    B只匹配出现在一个单词中间的模式,即不在单词边界上的字符。

    举例

    ^From  匹配任何以From开始的字符串

    /bin/tcsh$ 匹配任何以/bin/tcsh结束的字符串

    ^subject: hi$ 匹配仅由subject: hi组成的字符串

    the   任何包含有“the”的字符串

    the 任何以“the”开始的字符串

    the 仅匹配单词“the”

    4)创建字符类([])

    使用方括号的正则表达式会匹配方括号里的任何一个字符。

    方括号只有逻辑或的功能。

    举例:

    b[aeiu]t  匹配字符串 bat, bet, bit, but

    [cr][23][dp][o2] 匹配字符串有16个组合,先[cr]选一个,接着[23]选一个,......,最后[o2]选一个。

    5)指定范围(-)和否定(^)

    方括号里一对符号中间的连字符(-)用来表示一个字符的范围。如[0-9],匹配十进制数

    左方括号后第一个字符是上箭头符号(^),表示不匹配制定字符集里的任意字符。如[^aeiou],匹配一个非元音字符

    6)使用闭包操作符(*, +, ? {})实现多次出现/重复匹配

    *:  匹配它左边那个正则表达式出现0次或0次以上的情况;

    +: 匹配它左边那个正则表达式至少出现一次的情况;

    ?:   匹配它左边那个正则表达式模式出现0次或一次的情况。

    {}: 如{M}表示匹配M次出现的情况,{M,N}表示匹配M次到N次出现的情况。

    [dn]ot? 匹配最多有一个字符“t”,即 do, no, dot, not.

    [0-9]{15, 16} 匹配15或者16位数字,例如信用卡号码

    </?[^>]+> 匹配所有合法的HTML标签的字符串,即<...>、</...>。

    7)特殊字符   

    一些特殊字符可以用来代表字符集合。

    d:  表示[0-9]

    w: 表示[A-Za-z0-9]

    s:  表示空白字符

    D:  表示非十进制数字的字符,即[^0-9]

    举例:

    w+-d+ 表示一个字母和数字组成的字符串和至少一个数字,例如:ABCD-9

    d{3}-d{3}-d{4} 例如 800-555-1212

    w+@w+.com 例如xxxx@yyyy.com

    8)用圆括号(())组建组

    我们不仅想知道是否整个字符串匹配正则表达式,还想在匹配成功时取出某个特定的字符串或子字符串。

    ()的功能:

    对正则表达式进行分组

    匹配子组

    举例:

    m = re.match('(a(b))', 'ab') 两个子组

    m.group() 所有匹配部分

    m.group(1) 匹配的子组1 输出‘ab’

    m.group(2) 匹配的子组2 输出'b'

    m.groups() 所有匹配的子组的元组 输出 ('ab', 'b')

    re模块:核心函数和方法

    complie(pattern, flags=0) 

    对正则表达式模式pattern进行编译,flags是可选标识符,并返回一个regex对象

    re模块的函数和regex对象的方法

    match(pattern, string, flags=0)

    尝试用正则表达式模式pattern匹配字符串string,flags是可选标识符,如果匹配成功,则返回一个匹配对象;否则返回None

    search(pattern, string, flags=0)

    在字符串string中搜索正则表达式模式pattern的第一次出现,如果匹配成功,则返回一个匹配对象;否则返回None

    findall(pattern, string[,flags])

    在字符串中搜索正则表达式模式pattern的所有出现(非重复),返回一个匹配对象的列表

    finditer(pattern, string[,flags])

    和findall()相同,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象

    split(pattern, string, max=0)

    根据正则表达式pattern中的分隔符把字符string分割为一个列表,返回成功匹配的列表,最多分割max次

    sub(pattern, repl, string, max=0)

    把字符串string中所有匹配正则表达式pattern的地方替换成字符串repl,如果max的值没有给出,则对所有匹配的地方进行替换

     匹配对象的方法

    group(num=0) 返回全部匹配对象

    groups()  返回一个包含全部匹配的子组的元组

    匹配多个字符串( | )

    bt = 'bat|bet|bit'

    m = re.match(bt, 'bat')

    重复、特殊字符和子组

    patt = 'w+@(w+.)?w+.com'

    m = re.match(patt, 'nobody@xxx.com').group()

    if m is not None: m.group()

    输出: 'nobody@xxx.com'

    m = re.match('(www)-(ddd)', 'abc-123')

    m.group()  输出 'abc-123'

    m.group(1) 输出'abc'

    m.group(2) 输出‘123’

    m.groups() 输出(‘abc’, '123')

  • 相关阅读:
    mongodb入门安装与配置
    mssql export db
    初识django
    git
    水晶报表的使用经验和资料总结
    SQL中CONVERT转化函数的用法▲
    生活
    SQL中的临时表和表变量
    Convert Datetime to String in Sql Server
    转:探讨SQL Server 2005的安全策略
  • 原文地址:https://www.cnblogs.com/passion-hzhang/p/6058520.html
Copyright © 2011-2022 走看看