`
llyzq
  • 浏览: 585667 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

正则表达式基本语法

    博客分类:
  • J2SE
阅读更多

正则表达式基本语法
--------------------------------------------------------------------------------------------------------------------------
普通字符:
  字母、数字、汉字、下划线,以及没有被定义特殊意义的标点符号,都是 "普通字符"。
说明:
  "普通字符" 在匹配时,匹配与之相同的一个字符。如果一个表达式中,所有的字符都是 "普通字符",
  那么这个表达式的匹配操作,实际上就是一个普通的 "字符串查找" 操作。
--------------------------------------------------------------------------------------------------------------------------

 

--------------------------------------------------------------------------------------------------------------------------
简单的转义字符:(注意:java的正则表达式转义字符,一定要用双反斜线\\)
  一些不便书写的字符,比如换行符,制表符等,使用 \n,\t 来表示。
  另外有一些标点符号在正则表达式中,被定义了特殊的意义,因此需要在前面加 "\"
  进行转义后,匹配该字符本身。
说明:
  转义符          说明
   \a           响铃符 = \x07
   \f           换页符 = \x0C
   \n           换行符 = \x0A
   \r           回车符 = \x0D
   \t           制表符 = \x09
   \v           垂直制表符 = \x0B
   \e           ESC 符 = \x1B
   \x20          使用两位十六进制表示形式,可与该编号的字符匹配
   \u002B         使用四位十六进制表示形式,可与该编号的字符匹配
   \x{20A060}       使用任意位十六进制表示形式,可与该编号的字符匹配
  
  被定义了特殊的意义,因而需要在前面添加 "\" 来匹配该字符本身的标点符号:
 
  字符           说明
   ^            匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"
   $            匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"
   ( )           标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"
   [ ]           用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" 和 "\]"
   { }           修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"
   .            匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."
   ?            修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?"
   +            修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "\+"
   *            修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"
   |            左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"
-------------------------------------------------------------------------------------------------------------------------- 

 


--------------------------------------------------------------------------------------------------------------------------
转义字符 \Q...\E:
  使用 \Q 开始,\E 结束,可使中间的标点符号失去特殊意义,将中间的字符作为普通字符。
  使用 \U 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的小写字母转换成大写。
    在大小写敏感模式下,只能与大写文本匹配。
  使用 \L 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的大写字母转换成小写。
    在大小写敏感模式下,只能与小写文本匹配。

说明:
\Q...\E 适合用于:表达式中需要比较长的普通文本,而其中包含了特殊符号。
  举例
  表达式          说明
   \Q(a+b)*3\E       可匹配文本 "(a+b)*3"。
  \(a\+b\)\*3       如果不使用 \Q...\E 进行转义,则对每个特殊符号进行转义。
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
字符集合:
  可以匹配 "多个字符" 其中任意一个字符的正则表达式。虽然是 "多个字符",但每次只能匹配其中一个。
说明:
  字符集合         说明
   .            小数点可以匹配除了换行符(\n)以外的任意一个字符
   \w           可以匹配任何一个字母或者数字或者下划线
   \W           W大写,可以匹配任何一个字母或者数字或者下划线以外的字符
   \s           可以匹配空格、制表符、换页符等空白字符的其中任意一个
   \S           S大写,可以匹配任何一个空白字符以外的字符
   \d           可以匹配任何一个 0~9 数字字符
  \D           D大写,可以匹配任何一个非数字字符
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
自定义字符集合 [ ]:
  用中括号 [ ] 包含多个字符,可以匹配所包含的字符中的任意一个。同样,每次只能匹配其中一个。
  用中括号 [^ ] 包含多个字符,构成否定格式,可以匹配所包含的字符之外的任意一个字符。
说明:
  正则表达式中的特殊符号,如果被包含于中括号中,则失去特殊意义,但 \ [ ] : ^ - 除外。
  标准字符集合,除小数点(.)外,如果被包含于中括号中,自定义字符集合将包含该集合。
    比如:[\d.\-+],将可以匹配数字,小数点和 + - 符号。(小数点和 + 号失去特殊意义)
  用减号相连的 2 个普通字符,自定义字符集合将包含该范围。
    比如:[\dA-Fa-f],将可以匹配 0 - 9, A - F, a - f。
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
匹配次数限定符: 使被修饰的表达式可多次重复匹配的修饰符。


说明:
  可使被修饰的表达式重复固定次数,也可以限定一定的重复匹配的次数范围。
  
  在限定符之后的表达式能够匹配成功的情况下,不定次数的限定符总是尽可能的多匹配。
  如果之后的表达式匹配失败,限定符可适当“让出”能够匹配的字符,以使整个表达式匹配成功。
  这种模式就叫“贪婪模式”。
  限定符          说明
   {n}           表达式固定重复n次,比如:"\w{2}" 相当于 "\w\w"
   {m, n}         表达式尽可能重复n次,至少重复m次:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"
   {m, }          表达式尽可能的多匹配,至少重复m次:"\w\d{2,}"可以匹配 "a12","x456"...
   ?            表达式尽可能匹配1次,也可以不匹配,相当于 {0, 1}
   +            表达式尽可能的多匹配,至少匹配1次,相当于 {1, }
   *            表达式尽可能的多匹配,最少可以不匹配,相当于 {0, }
  
   
   "勉强模式"限定符
  在限定符之后添加问号(?),则使限定符成为“勉强模式”。勉强模式的限定符,总是尽可能少的匹配。
  如果之后的表达式匹配失败,勉强模式也可以尽可能少的再匹配一些,以使整个表达式匹配成功。
  限定符          说明
   {m, n}?         表达式尽量只匹配m次,最多重复n次。
   {m, }?         表达式尽量只匹配m次,最多可以匹配任意次。
   ??           表达式尽量不匹配,最多匹配1次,相当于 {0, 1}?
   +?           表达式尽量只匹配1次,最多可匹配任意次,相当于 {1, }?
  *?           表达式尽量不匹配,最多可匹配任意次,相当于 {0, }?
  
  
  "占有模式"限定符
  在限定符之后添加加号(+),则使限定符成为“占有模式”。占有模式的限定符,总是尽可能多的匹配。
  与“贪婪模式”不同的是,即使之后的表达式匹配失败,“占有模式”也不会“让出”自己能够匹配的字符。
  限定符          说明
   {m, n}+         表达式尽可能重复n次,至少重复m次。
   {m, }+         表达式尽可能的多匹配,至少重复m次。
   ?+           表达式尽可能匹配1次,也可以不匹配,相当于 {0, 1}+
   ++           表达式尽可能的多匹配,至少匹配1次,相当于 {1, }+
   *+           表达式尽可能的多匹配,最少可以不匹配,相当于 {0, }+
--------------------------------------------------------------------------------------------------------------------------

 

--------------------------------------------------------------------------------------------------------------------------
字符边界:
  本身不匹配任何字符,只对字符边界和字符间缝隙附加条件的表达式。
说明:
  有些正则表达式中的符号,可以对文本中当前所在位置作限制条件.
  边界条件         说明
   ^            当前位置必须是文本开始位置
   $            当前位置必须是文本结束位置
   \b           当前位置的左右两侧,只能有一侧是字母数字或下划线
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
选择表达式 xxx | xxx:
  使用竖线 "|" 分隔多段表达式,整个表达式可匹配其中任意一段。
说明
  正则引擎总是从左向右进行尝试匹配,如果每一段表达式都匹配失败,则整个表达式匹配失败。
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
分组 ( ):(注:这是捕获组)
  用括号 ( ) 将其他表达式包含,可以使被包含的表达式组成一个整体,在被修饰匹配次数时,可作为整体被修饰。
  另外,用括号包含的表达式,所匹配到的内容将单独作记录,匹配过程中或结束后可以被获取。
说明
  每一对括号会分配一个编号,使用 () 的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一
  个捕获是由整个正则表达式模式匹配的文本---就是整个表达式
  
组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1     ((A)(B(C)))
2     \A
3     (B(C))
4     (C)
组零始终代表整个表达式。
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
字符类运算符的优先级如下所示,按从最高到最低的顺序排列:
1     字面值转义       \x
2     分组        [...]
3     范围        a-z
4     并集        [a-e][i-u]
5     交集        [a-z&&[aeiou]]
--------------------------------------------------------------------------------------------------------------------------

 


--------------------------------------------------------------------------------------------------------------------------
非捕获组 (?:xxx):
  使用 (?: ) 包含其他表达式,可使被包含的表达式组成一个整体,在被修饰匹配次数时,可作为整体被修饰。
说明:
  与普通分组不同的是,非捕获组不记录所匹配的内容,比普通分组更节约内存资源。
  通过格式 (?ismg-ismg:xxx) 可对匹配模式进行修改,修改后的模式只对当前非捕获组内部起作用。
--------------------------------------------------------------------------------------------------------------------------

 

分享到:
评论

相关推荐

    PHP正则表达式基本语法和使用方法

    PHP正则表达式基本语法和使用方法 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 正则表达式(regular expression)是一种表示方式,...

    正则表达式基本语法,各类字符的转义

    ### 正则表达式基本语法与各类字符的转义 #### 概述 正则表达式是一种用于匹配字符串中字符组合的工具,在编程语言中广泛应用于文本搜索与替换操作。本文将详细介绍正则表达式的基本语法及特殊字符的转义方法,并...

    正则表达式基本语法详解_正则表达式_脚本之家1

    正则表达式基本语法详解 正则表达式是计算机科学中的一种形式语言,用于描述字符串模式的表达式。它通常用来检索、验证和处理字符串,广泛应用于文本处理、数据提取、验证用户输入等领域。 在正则表达式中,基本...

    正则表达式的基本语法

    正则表达式是一种强大的文本处理工具,用于在字符串中查找、替换或提取符合特定模式的文本。它由普通字符和特殊字符(元字符)组成,这些字符构成的模式可以匹配一个或多个字符串。在JavaScript中,正则表达式被广泛...

    正则表达式转换工具

    1. **正则表达式基本概念** - 元字符:如`.`, `*`, `+`, `?`, `{}`, `[]`, `\`, `^`, `$`等,它们具有特殊含义,在正则表达式中用来定义模式。 - 字符类:例如`[abc]`,匹配其中任意一个字符。 - 量词:`*`, `+`,...

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    1. **正则表达式基本概念** - **模式匹配**:正则表达式的核心在于模式,它是由特殊字符和普通字符组成的字符串,用于描述一系列可能的输入。 - **元字符**:如`^`(行首)、`$`(行尾)、`.`(任意字符)、`*`...

    正则表达式测试工具C#版(src)

    2. **正则表达式语法** - 基本元字符:如`.`(匹配任意字符,除换行符)、`^`(匹配行首)、`$`(匹配行尾)、`\d`(匹配数字)、`\w`(匹配字母数字下划线)等。 - 量词:`*`(零个或多个)、`+`(一个或多个)、...

    C#正则表达式语法大全

    以上示例展示了一个基本的正则表达式使用场景。`pattern`定义了一个模式,用于匹配一个名字和一个姓氏,它们由一个空格分隔。如果输入的字符串符合这个模式,程序将输出匹配到的名字和姓氏。 ### 注意事项 - 正则...

    正则表达式速查 正则表达式举例 正则表达式学习

    #### 二、正则表达式基本语法 根据提供的部分内容,我们可以总结出以下常用的正则表达式语法: 1. **转义字符**:`\'`(反斜杠)用来转义其后的字符,将其标记为特殊字符、原义字符、后向引用或八进制转义符。 - ...

    正则表达式翻译工具,RegexTest.exe

    使用RegexTest.exe时,用户应了解正则表达式的这些基本概念,并结合工具的特性,逐步构建和优化自己的正则表达式。对于初学者,学习正则表达式可能有些挑战,但通过实践和使用像RegexTest.exe这样的辅助工具,可以...

    精通正则表达式(第三版)简体中文版

    《精通正则表达式(第三版)简体中文版》是一本全面介绍正则表达式技术的书籍,不仅覆盖了基本语法和高级特性,还详细讲解了在不同编程环境下的具体应用方法。对于想要深入学习并掌握正则表达式技术的读者来说,本书...

    正则表达式不包涵特殊字符(除了 指定字符 以外)

    在探讨如何利用正则表达式来判断一个字符串除指定字符外不包含其他特殊字符之前,我们首先需要了解正则表达式的基本概念以及本场景中的具体需求。 ### 正则表达式简介 正则表达式是一种强大的文本处理工具,能够...

    正则表达式转NFA实现

    文件名“RextoNFA”可能包含一个实现这一转换的程序或库,它可能采用了递归下降解析或者其他算法来处理正则表达式的语法,并构建相应的NFA结构。 NFA的优势在于它允许并行匹配,即使在面对复杂正则表达式时,其性能...

    正则表达式通用语法正则表达式(REs)正则表达式

    虽然正则表达式在初学者眼中可能显得复杂且难以理解,但实际上通过学习其基本的语法结构和使用方法,任何人都能掌握这种强大的工具。 #### 二、正则表达式的历史与标准化 正则表达式最初的目的是用于描述自然语言...

    三目运算符+正则表达式

    在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...

Global site tag (gtag.js) - Google Analytics