精华内容
下载资源
问答
  • Python 匹配对象

    2018-04-20 17:36:15
    当处理正则表达式时,可以使用匹配对象的方法:这些是成功调用match()或者search()返回的对象,匹配对象有两个主要的方法:group()和groups()group()要么返回整个匹配对象,要么根据要求返回特定子组。groups()则仅...

    当处理正则表达式时,可以使用匹配对象的方法:这些是成功调用match()或者search()返回的对象,匹配对象有两个主要的方法:group()和groups()

    group()要么返回整个匹配对象,要么根据要求返回特定子组。groups()则仅返回一个包含唯一或者全部子组的元组。

    1.使用match方法匹配字符串

    match()函数从字符串的起始部分对模式进行匹配,如果匹配成功,就返回一个匹配对象;如果匹配失败,就返回None,匹配对象的group()方法能够用于显示那个成功的匹配,下面是一个示例,输出为foo:

    m = re.match('foo','foo')
    if m is not None:
        print(m.group())

    如下为一个失败的匹配示例,它返回None:

    m = re.match('foo','bar')
    if m is not None:
        print(m.group())
    

    2.使用search()在一个字符串中查找模式(搜索与匹配的对比)

    search()与match()的工作方式完全一致,不同的是search()会用它的字符串参数,在任意位置对给定正则表达式模式搜索第一次出现的匹配情况,如果搜索到成功的匹配,就会返回一个匹配对象,否则,返回None

    search()函数严格的对字符串从左到右搜索,如下成功代码,返回foo:

    m = re.search('foo','seafood')                              
    if m is not None:                                           
        print(m.group())                                        

    3.匹配多个字符串

    在正则表达式中使用择一匹配(|)符号,匹配多个字符串

    bt = 'bat|bet|bit'           
    m = re.search(bt,'bat')      
    if m is not None:            
        print(m.group())         

    4.匹配任何单个字符

    点号(.)可以匹配除了换行符\n或者非字符的任何单个字符

    如下代码返回_end

    anyend = '.end'                             
    m = re.search(anyend,'The_end.')            
    if m is not None:                           
        print(m.group())                        
    展开全文
  • 匹配对象及样例类 1.匹配对象 1)基本语法 class User(val name: String, val age: Int) object User{ def apply(name: String, age: Int): User = new User(name, age) def unapply(user: User): Option[...

    匹配对象及样例类

    1.匹配对象

    1)基本语法

    class User(val name: String, val age: Int)
    
    object User{
    
        def apply(name: String, age: Int): User = new User(name, age)
    
        def unapply(user: User): Option[(String, Int)] = {
            if (user == null)
                None
            else
                Some(user.name, user.age)
        }
    }
    
    object TestMatchUnapply {
        
        def main(args: Array[String]): Unit = {
            val user: User = User("zhangsan", 11)
            val result = user match {
                case User("zhangsan", 11) => "yes"
                case _ => "no"
            }
    
            println(result)
        }
    }
    
    

    2)总结

    • val user = User(“zhangsan”,11),该语句在执行时,实际调用的是User伴生对象中的apply方法,因此不用new关键字就能构造出相应的对象。
    • 当将User(“zhangsan”, 11)写在case后面的时候,即 [case User(“zhangsan”, 11) => “yes”],会默认调用unapply方法(对象提取器),user作为unapply方法的参数,unapply方法将user对象的name和age属性提取出来,与User(“zhangsan”, 11)中的属性值进行匹配。
    • case中对象的unapply方法(提取器)返回Some,且所有属性均一致,才算匹配成功,属性不一致,或返回None,则匹配失败。
    • 若只提取对象的一个属性,则提取器为unapply(obj:Obj):Option[T]
    • 若提取对象的多个属性,则提取器为unapply(obj:Obj):Option[(T1,T2,T3…)]
    • 若提取对象的可变个属性,则提取器为unapplySeq(obj:Obj):Option[Seq[T]]

    2.样例类

    1)基本语法

    case class Person (name: String, age: Int)

    2)说明

    ①样例类仍然是类,和普通类相比,只是其自动生成了伴生对象,并且伴生对象中自动提供了一些常用的方法,如apply、unapply、toString、equals、hashCode和copy

    ②样例类是为模式匹配而优化的类,因为其默认提供了unapply方法,因此,样例类可以直接使用模式匹配,而无需自己实现unapply方法。

    ③构造器中的每一个参数都成为val,除非它被显式地声明为var(不建议这样做)。

    3)案例实操

    上述匹配对象的案例,使用样例类会节省大量代码:

    // 使用样例类
    case class User(name: String, age: Int)
    
    object TestMatchUnapply {
        def main(args: Array[String]): Unit = {
            val user: User = User("zhangsan", 11)
            val result = user match {
                case User("zhangsan", 11) => "yes"
                case _ => "no"
            }
    
            println(result)
        }
    }
    
    
    展开全文
  • 老猿才开始学习正则表达式处理时,对于搜索返回的匹配对象这个名词不是很理解,因此在前阶段《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》介绍搜索函数时,都直接使用if...

    老猿才开始学习正则表达式处理时,对于搜索返回的匹配对象这个名词不是很理解,因此在前阶段《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》介绍搜索函数时,都直接使用if语句确认返回对象是否存在来判断搜索是否成功,没有直接使用匹配对象的数据。后来仔细学习理解后终于明白了组的概念和匹配对象的概念。
    匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放组匹配模式的组匹配情况,在没有定义组的情况下,将整个匹配结果作为组0,定义的组则从序号1开始顺序分配组号,通过组号就可以访问每个组的匹配情况。匹配对象记录了包括匹配的正则表达式、搜索的文本、匹配的结果文本、匹配文本在搜索文本的位置等信息。
    具体请参考《第11.18节 Python 中re模块的匹配对象》。

    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

    展开全文
  • 文章目录1.re模块使用-匹配对象2.Match对同的方法 1.re模块使用-匹配对象 使用前面介绍的match函数和search函数,匹配成功时都会返回一个Match对象,匹配失败时则返回None。 这里我们看一下如何操作返回的Match对象...

    1.re模块使用-匹配对象

    • 使用前面介绍的match函数和search函数,匹配成功时都会返回一个Match对象,匹配失败时则返回None。
      这里我们看一下如何操作返回的Match对象。
    • eg:根据Match对象判断是否匹配成功
    import re
    result1=re.search(r'python', '我喜欢学习Python!', re.I)
    if result1: #判断是否匹配成功
    print('result1:',result1) #匹配成功则输出返回的Match对象
    result2=re.match(r'python', '我喜欢学习Python!', re.I)
    if result2: #判断是否匹配成功
    print('result2:',result2) #匹配成功则输出返回的Match对象
    
    结果:
    根据Match对象判断是否匹配成功。
    result1: <re.Match object; span=(5, 11), match='Python'>
    
    将Match对象作为判断条件时,其永远返回True;而None则返回
    False。
    因此,通过“if result1:”和“if result2:”即可判断前面的匹配是否成功
    

    2.Match对同的方法

    • 这里我们仅学习group、groups、start和end这几种
      方法的使用。
    Match对象方法 描述
    group([group1,…]) 根据传入的组号返回对应分组的匹配结果。如果传入一个组号,则返回一个字符串形式的匹配结果;如果传入多个组号,则返回一个由多个匹配结果字符串组成的元组。如果传入0或不传入参数,则返回的是与正则表达式匹配的整个字符串
    groups() 返回一个由所有分组的匹配结果字符串组成的元组
    start(group=0) 返回指定分组的匹配结果字符串在原字符串中的起始位置;如果group值为0(默认值),则返回与正则表达式匹配的整个字符串在原字符串中的起始位置
    end(group=0) 返回指定分组的匹配结果字符串在原字符串中的结束位置;如果group值为0(默认值),则返回与正则表达式匹配的整个字符串在原字符串中的结束位置

    -eg:Match对象中的方法使用示例。

    import re
    str='''sno:#1810101#,name:#李晓明#,age:#19#,major:#计算机#
    3 sno:#1810102#,name:#马红#,age:#20#,major:#数学#'''
    
    ## ([\s\S]*?)是第一个分组,([\s\S]*?)是第二个分组
    rlt=re.search(r'name:#([\s\S]*?)#[\s\S]*?major:#([\s\S]*?)#',str, re.I)
    if rlt: #判断是否有匹配结果
    	print('匹配到的整个字符串:', rlt.group())
    	##match对象的group方法
    	print('name:%s, startpos:%d, endpos:%d'%(rlt.group(1),rlt.start(1), rlt.end(1)))
    	## rlt.group(1)指第一个分组
    	print('major:%s, startpos:%d, endpos:%d'%(rlt.group(2),rlt.start(2), rlt.end(2)))
    	print('所有分组匹配结果:', rlt.groups())
    else:
    	print('未找到匹配信息')
    
    
    匹配结果:
    匹配到的整个字符串: name:#李晓明#,age:#19#,major:#计算机#
    name:李晓明, startpos:20, endpos:23
    major:计算机, startpos:41, endpos:44
    所有分组匹配结果: ('李晓明', '计算机')
    
    展开全文
  • js 匹配对象

    2019-12-13 17:44:10
    场景:有数组arr,需要根据obj对象里面的managerId来排序arr数组的顺序,如果obj里面的managerId在arr数组里面是在第4位,就把arr里面的第四个数据排序到第一个来,代码如下: <script> var arr = [{ ...
  • 匹配对象是Python中re模块正则表达式匹配处理的返回结果,用于存放匹配的情况。老猿认为匹配对象更多的应该是与组匹配模式的功能对应的,只是没有使用组匹配模式的正则表达式整体作为组0。 为了说明下面的属性和方法...
  • 在处理正则表达式时,除regex 对象外,还有另一种对象类型 - 匹配对象。这些对象是在match()或search()被成功调用之后所返回的结果。匹配对象有两个主要方法:group() 和 groups().group()方法或者返回所有匹配对象...
  • 匹配对象的groups()方法返回一个包含所有参与匹配的子组(不含组0)的匹配到的搜索文本子串的元组,groupdict返回一个包含所有匹配到的命名组的组名为键值和命名组匹配到的搜索文本子串为值作为元素的字典,group...
  • ``` ... var matcher = /n/i //console.log(matcher.test(obj)) false // var matcher = /e/i //console.log..._这里匹配规则matcher跟对象obj之间是怎么进行匹配的,为什么会得到那些奇怪的true或者false???_
  • Python:正则表达式(二):如何使用re.search()返回的匹配对象中的具体内容呢?? 在上一篇中讲述了re.seach()会返回一个对象格式的数据,如下:<_sre.SRE_Match object; span=(16, 24), match=...
  • >>> s='''Lisf can be dreams, ...Lisfe can be great thoughts; ...Life can mean a person ...Sitting in a count.'''  r=re.compile("\\b(?P\w+)a(\w+)\\b") >>> m=r.search(s) ...>>> m.sta
  • 在正则表达式的学习过程中,我们经常会遇到对象和组的概念,那现在就来讲一下这两者在re正则表达式中的使用。 简单来说,组就是放置在圆括号里内的子模块,组的序号取决于它左侧的括号数。组0就是整个模块,所以在...
  • 找了好多资料,可能搜索关键字不对,所以都没有找到,今天给大伙分享一下: ...如我要匹配id为subnav下的div 还可以写成$("#subnav div").index(this) JQuery获取当前元素的索引值还是很方便的,比如一大堆的
  • python 正则表达式--匹配对象和组

    千次阅读 2014-04-23 10:25:24
    python里面有这么一种匹配,叫匹配对象和组。 在python中,当能够找到匹配项的时候,他们都会返回MathObject对象,这些对象包括匹配模式的子字符串信息。他们还包含了哪个模式匹配了字符串的哪部分信息---这些...
  • 'M.smith pass :'+stu.count(iif(sc.avg(sc.getscore()) >60,1,0))+...需要匹配出 1、sc,getscore() 2、stu,count(iif(sc.avg(sc.getscore()) >60,1,0)) 3、teacher.class 不需要比配单引号里面的 M.smith
  • 一、正则表达式的语法二、RegExp对象匹配方法exec方法匹配字符串后,匹配到的所有的值返回一个数组Array[2] 0: "JavaBcript" 1: "Bcript" index: 0 input: "JavaBcript是我" length: 2test方法返回false代表无匹配...
  • Altium designer执行update PCB弹出Match Nets,内容是不匹配的参考对象,不匹配的目标对象原因:之前更新过原理图,再次更新的时候会出现问题。要将pcb从工程中删除掉,重新建立一个pcb文件并添加到工程中,就可以...
  • 对象关系不匹配

    2011-09-27 08:57:40
    关系模型中的范式如果仔细观察就是在将关系模式OO化,范式越高,整个关系模式表示的记录就越OO,不匹配问题,我们要放在对象模型的层次上来分析,有几大类(来自Gavin King的书): 1, 粒度问题(对象有聚合,组合...
  • JavaScript - String对象正则匹配

    千次阅读 2015-04-26 16:36:25
    String对象正则匹配<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ; charset=UTF-8"> <tit
  • 使用特征匹配和单应性查找对象 在一张杂乱的图像中找到了一个对象(的某些部分)的位置。这些信息足以帮助我们在目标图像中准确的找到(查询图像)对象。为了达到这个目的我们可以使用 calib3d 模块中的 cv2....
  • // 匹配数组中的对象对象的值是否相等,如全等则提示节点流转值不能重复 let sameArr = []; data.map((item, index) => { let sameIndex = data.findIndex( (other, num) => index !== num && JSON.stringify...
  • 1. 字符匹配字符,是指在正则表达式中拥有特殊含义的字符字符含义.(点号,小数点)匹配任意单个字符,回车和换行符除外,包括:\n \r \u2028 或 \u2029。注意:m 多行(multiline)标志并不会影响点号的表现。...
  • Match对象的属性: ...待匹配的文本 ...匹配时使用的pattern对象(正则表达式) .pos 正则表达式搜索文本的开始位置 .endpos 正则表达式搜索文本的结束位置 ...
  • json转对象参数不匹配问题

    千次阅读 2017-03-16 16:36:27
    @RequestBody将json转对象参数不匹配问题 使用了@RequestBody注解后,需要json格式传入参数,并且传入的参数必须都和bean之中的参数一致(json的可以少,不能比bean多,名字不能不一样) springmvc用@...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,978
精华内容 9,991
关键字:

匹配对象