`
chungang
  • 浏览: 32731 次
社区版块
存档分类
最新评论

正则基础知识(字符组和量词)

 
阅读更多

                       
一、字符组

1. [0123456789]匹配0-9这些数字,也可以用[0-9]来表示,这种表示方法的原理实际上是利用了字符对应的ascII码,0-9对应48-57,当然也可以[A-Z][a-z]来表示字母,其中A-Z对应65-90,a-z对应97-122,但是[0-z]这种表示方法最好不要用,因为很多符号之类的字符,比如";","<"等等之类的也在[0-z]的范围内。
    例如:re.search("^[0-z]$", ":") != None  # => True


2.  "^",  "$" 分别匹配字符的起始位置和结束位置
    例如: re.search("^[0-9]", "2a") != None # => True
           re.search("[0-9]$", "a2") != None # => True
           re.search("[0-9]$", "2a") != None # => False
           re.search("^[0-9]$", "23") != None # => False (起始位置和结束位置都匹配的话,只适用于整个字符串就是一个数字符号的情况下)
           re.search("^[0-9]$", "2") != None # => True

3. 元字符是指 “-”, “[”, “]”, “^”, “$”等等,如果要取消元字符的特殊含义,就需要转义,就是在元字符前加上“\”,其中“-”紧接着“[”也可以表示在字符组内部使用“-”
    例如:re.search("^[-09]", "3") != None  # =>False
          re.search("^[-09]", "-") != None  # =>True
          re.search("^[0\\-9]", "-") != None # =>True

4. 原生字符串的使用
   Python提供了原生字符串,形式为r"string",例如:r"^[0\-9]$" == "^[0\\-9]$",在Python里面尽量多用原生字符串。

5. 排除型字符组
   书写格式为:[^],在“[”后面紧跟一个“^”,表示在当前位置,匹配一个没有列出的字符,例如:
          re.search(r"^[^0-9][0-9]$", "A8") != None  # =>True
          re.search(r"^[^0-9][0-9]$", "8")  != None  # =>False (排除型字符组必须要匹配一个字符)
    另外,在排除型字符组中,紧跟在“^”之后的“-”不是元字符,例如:
          re.search(r"^[^-09]$", "-") != None # => False

6. 字符组简记法
   \d 表示[0-9] ,d代表digit
   \w 表示[0-9a-zA-Z_],看清楚,后面还有个"_", w代表word
   \s 表示[ \t\r\n\v\f], s代表space

   \D是\d的排除型字符组
   \W是\w的排除型字符组
   \S是\s的排除型字符组

   [\s\S]这种用法表示任意字符

二、量词

1.一般形式{n},例如\d{6}表示匹配6个数字
  {m,n},例如\d{4,6}表示4到6个数字,记住逗号前后不要有空格
  {m,],表示至少有m个
  {0,n}, 表示之多有n个(在某些语言中也可是{,n})

2.常用量词
  * 等价于{0,}
  + 等价于{1,}
  ? 等价于{0,1}
  例如:re.search(r"^travell?er$", "traveler") != None # =>True
        re.search(r"^travell?er$", "traveller") != None # =>True

        re.search(r"^<[^>]+>$", "<body>") != None # =>True
        re.search(r"^<[^>]+>$", "</table>") != None # =>True
        re.search(r"^<[^>]+>$", "<>") != None # =>False

        re.search(r"^\"[^\"]*\"$", "\"some\"") != None # =>True
        re.search(r"^\"[^\"]*\"$", "\"\"") != None # =>True

  注意: 如果查找‘customerId: ccheaaweb|3’中的ccheaaweb的话,可以这样匹配
  re.search(r"customerId: (\w+)\|").group(1),记得要将+写在\w后面而不是括号后面


3.数据提取
  re.search()如果匹配成功,返回一个MatchObject 对象,可以调用MatchObject.group(0)来获取表达式的结果
  例如:
        print re.search(r"\d{6}", "ad123456bc").group(0) = > 123456
  另外一种提取数据的方法是re.findall(pattern, string)
  例如:
        print re.findall(r"\d{6}", "zipcode1:201203, zipcode2:100859")
        = > ['201203', '100859']

4.点号
  一般都认为"."可以匹配任意字符,但是有一个字符不能由点号匹配,那就是换行符\n

5.匹配优先量词(贪婪量词)和忽略优先量词(惰性量词)
  匹配优先量词,在拿不准是否需要匹配的时候,优先尝试匹配,以被将来回溯。如之前的"*","+","?",{m,n},{m,},{,n} 就是匹配优先。
  忽略优先量词,如果不确定是否要匹配,会选择不匹配的状态,在匹配优先量词后后加上"?"就是忽略优先。

分享到:
评论

相关推荐

    Js正则表达式匹配字符

    本篇将深入探讨JavaScript正则表达式的基础知识、核心概念以及常用方法。 1. **基础概念** - **模式(Pattern)**:正则表达式的主体,定义了要匹配的字符序列。 - **分隔符(Delimiter)**:通常使用斜线 `/` 来...

    正则表达式基础知识

    本文将深入讲解正则表达式的基础知识,包括其概念、构成、常见元素以及进阶特性。 首先,正则表达式(Regular Expression)是一种模式匹配语言,用于定义一系列规则,用于检查输入的字符串是否符合这些规则。它主要...

    正则表达式的基础知识

    ### 正则表达式的基础知识 正则表达式是一种强大的文本处理工具,广泛应用于各种编程语言和工具中,用于字符串的查找、替换和提取。它由普通字符和元字符组成,能够描述特定的字符模式,进而对文本进行精确匹配。 ...

    正则表达式 基础知识 一张纸

    ### 正则表达式基础知识详解 正则表达式(Regular Expression)是一种强大的文本处理工具,在数据提取、格式验证以及文本搜索替换等场景中发挥着关键作用。本文将深入解析正则表达式的各种元字符、量词、锚点、字符...

    C#正则表达式基础知识

    ### C#正则表达式基础知识 #### 前言 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,包括C#。它允许开发者以灵活且高效的方式匹配、查找、替换文本字符串中的模式。对于软件开发人员而言,...

    正则表达式工具(附正则表达式知识、示例)

    一、正则表达式基础知识 1. 基本元素: - 字符:匹配自身,如"a"匹配字符"a"。 - 范围字符:如[a-z],匹配任何小写字母。 - 通配符:.,匹配任意单个字符。 - 量词:*、+、?,分别代表零或多个、一个或多个、零...

    PHP正则表达式基础知识

    ### PHP正则表达式基础知识详解 正则表达式是一种强大的文本匹配工具,广泛应用于各种编程语言中,包括PHP。在日常开发中,正则表达式能够帮助我们进行字符串搜索、替换以及提取等操作,尤其在数据验证、文本解析等...

    C#字符串和正则表达式参考手册

    在C#编程语言中,字符串和正则表达式是两个非常重要的概念,广泛应用于数据处理、文本分析和验证。下面将详细阐述这两个主题的核心知识点。 一、C#字符串 1. 字符串基础:在C#中,字符串是不可变的对象,意味着...

    正则表达式基础学习笔记

    正则表达式(Regular Expression,简称regex)是用于...通过熟练掌握上述基础知识,你将能够编写出高效且精准的正则表达式,大大提高文本处理的效率。在实际应用中,不断实践和积累经验,是成为正则表达式高手的关键。

    VB_NET字符串和正则表达式参考手册

    总的来说,理解和掌握VB.NET中的字符串操作与正则表达式是提高编程技能,尤其是进行.NET Web开发的必备知识。通过深入研究这本参考手册,开发者不仅可以提升编程技巧,还能更好地应对各种复杂的文本处理挑战。

    Android EditText 正则表达式 限制数字、字母、字符 输入 密码框

    例如,如果要限制输入为数字、小写字母和特殊字符,可以使用如下正则: ```java InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, ...

    JAVA正则表达式大全

    这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`表示行尾,`*`表示零次或多次,`+`表示一次或多次,`?`表示零次或一次。字符类如`[abc]`匹配...

    正则模拟器

    "正则表达式30分钟入门教程.url" 是一个链接文件,其扩展名 ".url" 表明它指向一个网页资源,可能是提供正则表达式基础知识的在线教程。这类教程通常会涵盖基础语法,如字符类、量词、分组、预查、边界等等,以及...

    正则表达式生成和检验工具

    本篇文章将详细探讨与“正则表达式生成和检验工具”相关的知识点。 1. **正则表达式基础** - **模式匹配**:正则表达式是由字符和特殊符号组成的模式,用于匹配字符串中的特定模式。例如,`\d{3}-\d{4}`可以匹配...

    学习正则表达式

    书中首先介绍了正则表达式的基础知识,包括Regexpal工具的使用,如何匹配北美电话号码以及使用字符组匹配数字和字符等。然后,书中详细讲解了字符组的使用、字符组取反、并集与差集,以及POSIX字符组等相关概念。...

    javascript正则表达式基础篇.docx

    正则表达式中有很多特殊字符和量词,比如: - `/.../`:定义正则表达式的开始和结束。 - `^`:匹配字符串的开始。 - `$`:匹配字符串的结束。 - `s`:匹配任何空白字符。 - `S`:匹配任何非空白字符。 - `d`:匹配...

    JS 正则表达式基础详解

    下面我们将深入探讨JS正则表达式的基础知识。 ### 1. 创建正则表达式 创建正则表达式有两种方式:字面量表示法和构造函数表示法。 - **字面量表示法**:使用`/pattern/flags`的形式,例如`/hello/i`表示不区分大...

    详细的C#正则表达式基础教程

    通过学习这些基础知识和实例应用,你将能够熟练地在C#项目中使用正则表达式来处理各种字符串操作。不断实践和理解这些概念,将使你在处理字符串问题时更加游刃有余。记得查阅官方文档和在线资源,以便获取最新的信息...

Global site tag (gtag.js) - Google Analytics