`
llyzq
  • 浏览: 578916 次
  • 性别: 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)是一种表示方式,...

    正则表达式的基本语法

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行...

    JAVA正则表达式JAVA正则表达式JAVA正则表达式

    正则表达式通常由一些特殊的字符和语法组成,这些字符和语法可以被组合在一起以描述复杂的字符串模式。 2. 正则表达式的组成部分 正则表达式通常由以下几部分组成: * 字符 literals:这些是正则表达式中最基本的...

    正则表达式经典实例

    通过一个精练的教程理解正则表达式的基本原理和技巧; 在不同的编程语言和脚本语言中有效使用正则表达式; 学习如何对输入进行合法性检查和格式化; 处理单词、文本行、特殊字符和数值; 学习如何在uRL、路径、...

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

    只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。  只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。  只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。  只能输入由数字、26个英文...

    JAVA 正则表达式 教程

    该教程中所介绍的正则表达式应用仅仅是最为简单的(并没有完全地涉及到 Pattern 类支持的所有正则表达式语法,也没有涉及到高级的应用),适合于从未接触过或者是尚未完全明白正则表达式基础的学习者。在学习完该...

    正则表达式语法。介绍了基本表达式。

    关于正则表达式语法。介绍了基本表达式。可以用于快速查询表达式的匹配符。

    Java正则表达式 介绍java正则表达式的基本语法

    Java正则表达式 ,介绍java正则表达式的基本语法等信息

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

    正p表达式基本语法详解正p表达式基本语法详解app开发报价单开发一Napp多少钱达内的计算机学校排名集成灶十大排行达内培训怎R样集成灶的排名集成墙面价格p2p网

    正则表达式笔记归纳

    正则表达式的基本语法,主要用于javascript开发时看正则表达式方便点

    神奇的匹配-正则表达式之旅

    本书从正则表达式的基本概念、基本语法入手 着重于数字验证、字符串验证、数字和字符串混合验证及html处理等各个方面的应用。并基于目前流行的程序语言和应用环境-如c、asp.net、jsp、或php 全面介绍了创建正则...

    《正则表达式经典实例》扫描版

     通过一个精练的教程理解正则表达式的基本原理和技巧;  在不同的编程语言和脚本语言中有效使用正则表达式;  学习如何对输入进行合法性检查和格式化;  处理单词、文本行、特殊字符和数值;  学习如何在URL、...

    正则表达式教程 正则表达式的基本语法md

    正则表达式(Regular Expression)是一种用来描述字符串规则的工具,它可以用来匹配、查找、替换字符串,是...在本教程中,我们将介绍正则表达式的基本语法、常用模式和实际应用,帮助你快速掌握正则表达式的使用方法。

    正则表达式基本语法详解

    1.正则表达式基本语法 两个特殊的符号’^’和’$’。他们的作用是分别指出一个字符串的开始和结束。例子如下: “^The”:表示所有以”The”开始的字符串(”There”,”The cat”等); “of despair$”:表示所以...

    神奇的匹配 正则表达式求精之旅

    《神奇的匹配:正则表达式求精之旅》从正则表达式的基本概念、基本语法入手,着重于数字验证、字符串验证、数字和字符串混合验证及HTML处理等各个方面的应用。并基于目前流行的程序语言和应用环境(如C#、ASP.NET、...

Global site tag (gtag.js) - Google Analytics