精华内容
下载资源
问答
  • python re.search 和 re.match 正则表达式一 re.search 和 re.matchpython提供了2中主要的正则表达式操作:re.matchre.search。match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则返回...

    python re.search 和 re.match 正则表达式

    一 re.search 和 re.match

    python提供了2中主要的正则表达式操作:re.match 和 re.search。

    match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则返回none;

    search :将字符串的所有字串尝试与正则表达式匹配,如果所有的字串都没有匹配成功,返回none,否则返回matchobject;(re.search相当于perl中的默认行为)

    实例代码:

    import re

    def testsearchandmatch():

    s1="helloworld, i am 30 !"

    w1 = "world"

    m1 =  re.search(w1, s1)

    if m1:

    print("find : %s" % m1.group())

    if re.match(w1, s1) == none:

    print("cannot match")

    w2 = "helloworld"

    m2 = re.match(w2, s1)

    if m2:

    print("match : %s" % m2.group())

    testsearchandmatch()

    #find : world

    #cannot match

    #match : helloworld

    二 re.compile 和 re.ignorecase

    re.compile返回regrexobject对象, 用来重复使用regrexobject;

    re.ignorecase用来在匹配时忽略大小写;

    实例代码:

    def testcompile():

    regex = "d{3}-d{7}"

    regexobject = re.compile(regex)

    print(regexobject.search("aaa 027-4567892").group())

    print(regexobject.search("bbb 021-1234567").group())

    print(regexobject.search("ccc 010-123456"))

    testcompile()

    #027-4567892

    #021-1234567

    #none

    def testignorecase():

    print(re.search('world', "hello world !").group())

    print(re.search('world', "hello world !", re.ignorecase).group())

    print(re.search('world', "hello world !"))

    testignorecase()

    #world

    #world

    #none

    三 matchobject

    matchobject为re.search,re.match等匹配成功后返回的对象,包含了匹配的结果。

    在正则表达式中,可以使用()来将部分正则表达式分组且编号,编号从1开始,使用数字来使用,例如1 2 3,(?p)还可以给分组命名, 使用(?p=name)来使用命名的组。

    matchobject.group()包含了所有匹配的内容,等价于matchobject.group(0),此时的0表示所有的匹配;

    matchobject.groups教程()包含了正则表达式中所有使用()定义的组对应的匹配内容;

    matchobject.group(n),表示返回正则表达式中的第n个组()匹配的内容,此时n不为0, 等价于matchobject.groups()[n-1];

    matchobject.lastindex, 表示正则表达式中分组()的个数;

    实例代码:

    def testmatchobject():

    m = re.match(r"(?pd{4})-(?pd{2})-(?pd{2})", "2010-10-01, i am very happy")

    print(m.group())

    print(m.group(0))

    print(m.groups())

    print(m.group(1))

    print(m.groups()[0])

    print(m.group(2))

    print(m.groups()[1])

    print(m.group(3))

    print(m.groups()[2])

    print(m.groupdict())

    print(m.lastindex)

    testmatchobject()

    #2010-10-01

    #2010-10-01

    #('2010', '10', '01')

    #2010

    #2010

    #10

    #10

    #01

    #01

    #{'date': '01', 'year': '2010', 'month': '10'}

    #3

    四 re和matchobject的方法split+findall+finditer+sub

    split方法,使用给定的表达式来分割字符串;

    findall方法,返回所有的与给定的表达式匹配的一个list;

    finditer方法,返回所有与给定的表达式匹配的matchobject的iterator;

    sub方法,使用新的字符串替换表达式匹配的字符串;

    实例代码:

    def testreandmatchobjectmethonds():

    #split findall finditer sub

    s1 = "i am working in microsoft !"

    l = re.split('s+', s1) # l is list type

    print( l)

    s2 = "aa 12 bb 3 cc 45 dd 88 gg 89"

    l2 = re.findall('d+', s2)

    print(l2)

    it = re.finditer('d+', s2) # it is one iterator type

    for i in it: # i is matchobject type

    print (i.group())

    s3 = re.sub('d+', '200', s2)

    print(s3)

    testreandmatchobjectmethonds()

    #['i', 'am', 'working', 'in', 'microsoft', '!']

    #['12', '3', '45', '88', '89']

    #12

    #3

    #45

    #88

    #89

    #aa 200 bb 200 cc 200 dd 200 gg 200

    五 re.search只返回第一个匹配

    实例代码:

    def testsearch():

    s1 = "bb 3 cc 45 dd 88 gg 89"

    m = re.search('d+', s1)

    print(m.group())

    testsearch()

    #3

    展开全文
  • re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。例子1:#!/usr/bin/pythonimportreprint(re.match('www', 'www.runoob.com').span())# 在起始位置匹配#过滤掉一些...

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

    例子1:

    #!/usr/bin/python

    importre

    print(re.match('www', 'www.runoob.com').span())# 在起始位置匹配  #过滤掉一些信息,只留位置,返回元组

    print(re.match('com', 'www.runoob.com'))# 不在起始位置匹配

    结果为:

    (0,3)

    None

    例子2:

    #!/usr/bin/python3

    importre

    line= "Cats are smarter than dogs"# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符

    matchObj= re.match(r'(.*) are (.*?) .*', line, re.M|re.I)

    ifmatchObj:

    print("matchObj.group() : ", matchObj.group())

    print("matchObj.group(1) : ", matchObj.group(1))

    print("matchObj.group(2) : ", matchObj.group(2))

    else: print("No match!!")

    以上实例执行结果如下:

    matchObj.group() : Cats are smarter than dogs

    matchObj.group(1) : Cats

    matchObj.group(2) : smarter

    re.search 扫描整个字符串并返回第一个成功的匹配。

    #!/usr/bin/python3

    import re

    print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配

    print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配

    结果为:

    (0, 3)

    (11, 14)

    展开全文
  • 1. *表示匹配任意多个字符 \d*表示匹配任意多个数字字符import retext = "123h1ello world"text1 = "123Hello world456"text2 = "hello world"res = re.match("\d*", text)res1 = re.match("\d*", text1)res2 = re....

    1.  *表示匹配任意多个字符   \d*表示匹配任意多个数字字符

    import re

    text = "123h1ello world"

    text1 = "123Hello world456"

    text2 = "hello world"

    res = re.match("\d*", text)

    res1 = re.match("\d*", text1)

    res2 = re.match("\d*", text2)

    print(res.group())

    print(res1.group())

    print(res2.group())

    输出结果为

    123

    123

    Process finished with exit code 0

    示例2:*

    需求:匹配出,一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可有可无

    import re

    #注意是前一个字符

    ret = re.match("[A-Z][a-z]*","M")

    print(ret.group())

    ret = re.match("[A-Z][a-z]*","AaBcDE")

    print(ret.group())

    ret = re.match("[A-Z][a-z]*","Aabcdef")

    print(ret.group())

    #运行结果

    M

    Aa

    Aabcdef

    2.  +表示匹配1个或者多个任意字符   \w+表示匹配一个或多个字母,数字或下划线

    import re

    text = "he+llo world"

    text1 = "Hello world456"

    text2 = "+hello world"

    res = re.match("\w+", text)

    res1 = re.match("\w+", text1)

    res2 = re.match("\w+", text2)

    print(res.group())

    print(res1.group())

    print(res2)

    输出结果为

    he

    Hello

    None

    Process finished with exit code 0

    示例2:+

    需求:匹配出,变量名是否有效

    import re

    names = ["name1","_name","2_name","__name__"]

    for i in names:

    ret = re.match("[a-zA-Z_]+[\w]*",i)

    if ret:

    print("变量名 %s 符合要求" % ret.group())

    else:

    print("变量名 %s 非法" % i)

    #运行结果

    变量名 name1 符合要求

    变量名 _name 符合要求

    变量名 2_name 非法

    变量名 __name__ 符合要求

    3.  ?表示匹配0个或一个字符     \w?表示匹配0或1个字母,数字或下划线

    import re

    text = "he+llo world"

    text1 = "Hello world456"

    text2 = "+hello world"

    res = re.match("\w?", text)

    res1 = re.match("\w?", text1)

    res2 = re.match("\w?", text2)

    print(res.group())

    print(res1.group())

    print(res2.group())

    输出结果为

    h

    H

    Process finished with exit code 0

    示例2:?

    需求:匹配出0到99之间的数字

    import re

    ret = re.match("[1-9]?[0-9]","7")

    print(ret.group())

    ret = re.match("[1-9]?\d","33")

    print(ret.group())

    ret = re.match("[1-9]?\d","09")

    print(ret.group())

    #运行结果

    7

    33

    0 # 这个结果并不是想要的,利用$才能解决

    4.  {m}表示匹配m个字符    \d{11}表示匹配11个数字字符

    import re

    text = "he+llo world"

    text1 = "Hello world456"

    text2 = "hello world"

    res = re.match("\w{2}", text)

    res1 = re.match("\w{3}", text1)

    res2 = re.match("\w{4}", text2)

    print(res.group())

    print(res1.group())

    print(res2.group())

    输出结果为

    he

    Hel

    hell

    Process finished with exit code 0

    示例2:{m}

    需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

    import re

    ret = re.match("[a-zA-Z0-9_]{6}","123a3g45678")

    print(ret.group())

    ret = re.match("[[a-zA-Z0-9_]{8,20}","1ad3123456addfcasdef")

    print(ret.group())

    #运行结果

    123a3g

    1ad3123456addfcasdef

    5.   {m,n}表示匹配m-n个字符   \w{2,4}表示匹配2-4个字符

    import re

    text = "hello world"

    text1 = "Helloworld456"

    text2 = "hello world"

    res = re.match("\w{2,5}", text)

    res1 = re.match("\w{6,8}", text1)

    res2 = re.match("\w{20,25}", text2)

    print(res.group())

    print(res1.group())

    print(res2)

    hello

    Hellowor

    None

    Process finished with exit code 0

    展开全文
  • From Python正则表达式re.match(pattern, string, flags=0)尝试从字符串起始位置匹配一个模式;如果不是起始位置匹配成功,则 re.match() 返回none.匹配成功,re.match() 返回一个匹配的对象,否则返回None.pattern ...

    From Python正则表达式

    re.match(pattern, string, flags=0)

    尝试从字符串起始位置匹配一个模式;如果不是起始位置匹配成功,则 re.match() 返回none.

    匹配成功,re.match() 返回一个匹配的对象,否则返回None.

    pattern - 匹配的正则表达式

    string - 要匹配的字符串

    flags - 标志位,控制正则表达式的匹配方式,如,是否区分大小写,多行匹配等.

    e.g.

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import re

    print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配

    print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配

    output:

    (0, 3)

    None

    re.search(pattern, string, flags=0)

    扫描整个字符串并返回第一个成功的匹配.

    匹配成功, re.search()返回一个匹配的对象,否则返回None.

    e.g.

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import re

    print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配

    print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配

    output:

    (0, 3)

    (11, 14)

    re.match() 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;

    re.search() 匹配整个字符串,直到找到一个匹配.

    re.sub(pattern, repl, string, count=0, flags=0)

    替换字符串中的匹配项.

    pattern - 正则中的模式字符串

    repl - 替换的字符串,也可为一个函数

    string - 要被查找替换的原始字符串

    count - 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配

    e.g.

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import re

    phone = "2004-959-559

    # 删除字符串中的 Python注释

    num = re.sub(r'#.*$', "", phone)

    print "电话号码是: ", num

    # 删除非数字(-)的字符串

    num = re.sub(r'\D', "", phone)

    print "电话号码是 : ", num

    output:

    电话号码是: 2004-959-559

    电话号码是 : 2004959559

    正则表达式模式

    模式

    描述

    ^

    匹配字符串的开头

    $

    匹配字符串的末尾

    .

    匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符

    […]

    用来表示一组字符,单独列出:[amk] 匹配 ‘a','m'或'k'

    [^…]

    不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符

    re*

    匹配0个或多个的表达式

    re+

    匹配1个或多个的表达式

    re?

    匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

    re{ n}

    re{ n,}

    精确匹配n个前面表达式

    re{ n, m}

    匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

    aIb

    匹配a或b

    (re)

    G匹配括号内的表达式,也表示一个组

    (?imx)

    正则表达式包含三种可选标志:i, m, 或 x, 只影响括号中的区域

    (?-imx)

    正则表达式关闭 i, m, 或 x 可选标志, 只影响括号中的区域

    (?: re)

    类似 (…), 但是不表示一个组

    (?imx: re)

    在括号中使用i, m, 或 x 可选标志

    (?-imx: re)

    在括号中不使用i, m, 或 x 可选标志

    (?#…)

    注释

    (?= re)

    前向肯定界定符. 如果所含正则表达式,以 … 表示,在当前位置成功匹配时成功,否则失败. 但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边.

    (?! re)

    前向否定界定符. 与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功

    (?> re)

    匹配的独立模式,省去回溯

    \w

    匹配字母数字及下划线

    \W

    匹配非字母数字及下划线

    \s

    匹配任意空白字符,等价于 [\t\n\r\f]

    \S

    匹配任意非空字符

    \d

    匹配任意数字,等价于 [0-9].

    \D

    匹配任意非数字

    \A

    匹配字符串开始

    \Z

    匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

    \z

    匹配字符串结束

    \G

    匹配最后匹配完成的位置

    \b

    匹配一个单词边界,也就是指单词和空格间的位置.例如, ‘er\b' 可以匹配”never” 中的 ‘er',但不能匹配 “verb” 中的 ‘er'.

    \B

    匹配非单词边界. ‘er\B' 能匹配 “verb” 中的 ‘er',但不能匹配 “never” 中的 ‘er'.

    \n, \t, 等.

    匹配一个换行符。匹配一个制表符, 等

    \1…\9

    匹配第n个分组的内容.

    \10

    匹配第n个分组的内容,如果它经匹配. 否则指的是八进制字符码的表达式.

    正则表达式实例

    实例

    描述

    python

    匹配 “python”

    [Pp]ython

    匹配 “Python” 或 “python”

    rub[ye]

    匹配 “ruby” 或 “rube”

    [aeiou]

    匹配中括号内的任意一个字母

    [0-9]

    匹配任何数字,类似于 [0123456789]

    [a-z]

    匹配任何小写字母

    [A-Z]

    匹配任何大写字母

    [a-zA-Z0-9]

    匹配任何字母及数字

    [^aeiou]

    除了aeiou字母以外的所有字符

    [^0-9]

    匹配除了数字外的字符

    .

    匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n' 在内的任何字符,请使用象 ‘[.\n]' 的模式.

    \d

    匹配一个数字字符, 等价于 [0-9].

    \D

    匹配一个非数字字符, 等价于 [^0-9].

    \s

    匹配任何空白字符,包括空格、制表符、换页符等等, 等价于 [ \f\n\r\t\v].

    \S

    匹配任何非空白字符, 等价于 [^ \f\n\r\t\v].

    \w

    匹配包括下划线的任何单词字符, 等价于'[A-Za-z0-9_]'.

    \W

    匹配任何非单词字符, 等价于 ‘[^A-Za-z0-9_]'.

    以上这篇Python 正则表达式 re.match/re.search/re.sub的使用解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

    展开全文
  • ...python re.search 和 re.match ...一 re.search 和 re.match ...python提供了2中主要的正则表达式操作:re.matchre.search。 match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobj
  • 正则大同小异,python 中的正则跟其他语言相比略有差异:1、替换字符串时,替换的字符串可以是一个函数2、split 函数可以指定分割次数,这会导致有个坑3、前项界定的表达式必须定长下面详细描述下 re 模块的使用方法...
  • 快速入门import repattern = 'this'text = 'Does this text match the ...'match = re.search(pattern, text)s = match.start()e = match.end()print('Found "{0}"\nin "{1}"'.format(match.re.pattern, match.stri...
  • Pythonre模块中,常用的有四个方法(match、search、findall、finditer)都可以用于匹配字符串,今天我们先来了解一下re.match()。 re.match()必须从字符串开头匹配!match方法尝试从字符串的起始位置匹配一个...
  • 一、平台windows7、python3.7二、目标了解python3正则表达式re的三个方法的用法三、示例和结果如下import rea = 'abc1d2ef3y'b = '3721a3690'resultA = re.match('[0-9]', a)print(resultA)# #打印结果是None,就是...
  • 今天小编就为大家分享一篇Python 正则表达式 re.match/re.search/re.sub的使用解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。例子1:#!/usr/bin/pythonimportreprint(re.match(‘www‘, ‘www.runoob.com‘).span())# 在起始位置匹配#过滤掉...
  • 正则大同小异,python 中的正则跟其他语言相比略有差异:1、替换字符串时,替换的字符串可以是一个函数2、split 函数可以指定分割次数,这会导致有个坑3、前项界定的表达式必须定长下面详细描述下 re 模块的使用方法...
  • 快速入门import repattern = 'this'text = 'Does this text match the ...'match = re.search(pattern,text)s = match.start()e = match.end()print('Found "{0}"\nin "{1}"'.format(match.re.pattern,match.string...
  • 1. *表示匹配任意多个字符 \d*表示匹配任意多个数字字符import retext = "123h1ello world"text1 = "123Hello world456"text2 = "hello world"res = re.match("\d*", text)res1 = re.match("\d*", text1)res2 = re....
  • 匹配成功,re.match() 返回一个匹配的对象,否则返回None.pattern - 匹配的正则表达式string - 要匹配的字符串flags - 标志位,控制正则表达式的匹配方式,如,是否区分大小写,多行匹配等.e.g.#!...
  • Python - 正则表达式 re.match/re.search/re.subFrom Python正则表达式re.match(pattern, string, flags=0)尝试从字符串起始位置匹配一个模式;如果不是起始位置匹配成功,则 re.match() 返回none. 匹配成功,re....
  • 正则表达式在编程领域的用途极其广泛,Python对其的支持,体现在标准的re模块中。本文集中介绍re模块中主要接口的使用方法,不对正则表达式本身的语法做介绍,这部分请同学们自行学习其他资料。引入re模块import ...
  • 一、re.matchre.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。import retext = "JGood is a handsome boy, he is cool, clever, and so on..."m = re.match(r"(\w+)\s", text)if m:print m...
  • re.matchre.search简介 re.match函数 语法: re.search(pattern,string,flags=0) re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。 re.search函数 语法: re....
  • #!/usr/bin/python ...m = re.match(r'(.*) is (.*?) .*',str,re.M|re.I) s = re.search(r'(.*) is (.*?) .*',str,re.M|re.I) if m: print("测试 ",m.group()) print("测试 1", m.group(1)) print(
  • )Q’seq="SQAAAATQ"regrex=re.compile(motif) #编译成正则对象regrex=re.compile(motif,re.IGNORECASE) #编译成正则对象,忽略大小写匹配:sea=regrex..search(seq) #返回第一次的匹配对象mat=regrex.match(seq)#从...
  • re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。例子1:#!/usr/bin/pythonimportreprint(re.match('www', 'www.runoob.com').span())# 在起始位置匹配#过滤掉一些...
  • re模块常用的一些功能有: re.match, re.compile, re.search, re.findall,re.finditer,re.sub, re.split这里分别做简单的介绍,便于以后查询使用1. re.matchre.matchre模块的一个基本方法,理解了该方法再去看...
  • python 正则表达式 python re模块的使用

    千次阅读 2017-05-07 16:56:04
    python正则表达式,python re模块 一、re.match() 用正则表达式模式从字符串开头开始匹配 二、re.search() 在字符串中查找表达式第一次出现 三、re.sub() 检索替换 四、re.split() 字符串分割 五、re.findall...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,494
精华内容 1,397
关键字:

match正则pythonre

python 订阅