1. 基本概念(basic concepts)

  • "|" : or
  • "()" : the scope and precedence of operators
  • quantification:

1) "?": at most one which means one or zero

2) "+": at least one

3) "*": zero or more

2. 常用字符及功能

字符 描述
\ 转义。将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符digit。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符return。等价于\x0d和\cM。
\s 匹配任何空白字符space,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符tab。等价于\x09和\cI。
\v 匹配一个垂直制表符vertical。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符word。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。.
\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。

转载于:https://blog.51cto.com/phoenix2012/990821

正则表达式(Regular Expression)相关推荐

  1. 初步了解并使用正则表达式 (REGular EXPression)

    正则表达式(REGular EXPression),正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.只有掌 ...

  2. java正则表达式及api_JAVA常用API:正则表达式regular expression

    一.正则表达式的概念 正则表达式,regular expression,在代码中通常简写成regex 正则表达式是一个字符串,使用每单个字符串来描述.定义匹配规则,匹配一系列符合某个语法规则的字符串. ...

  3. 正则表达式 匹配点号_Python入门:正则表达式(Regular Expression)

    正则表达式用来干嘛 正则表达式是用来匹配文本的一种语言.别被语言吓到,正则表达式其实非常简单,可能你花2个小时就能用起来,但是你一定会觉得非常强大,像非常厉害的数据爬取,网页爬虫,都要用到正则表达式! ...

  4. oracle的正则表达式(regular expression)简单介绍

    目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境. Oracle 10g正则表达式提高了SQL灵活性.有效的解 ...

  5. 正则表达式Regular Expression

    <编译原理>第三章习题 我们的教材是那本经典的"龙书":<Compiler: Principles, Techniques, and Tools> 灰常灰常 ...

  6. 正则表达式(regular expression)————以Qt为例

    文章目录 1 应用 2 简介 2.1 组成 2.2 特殊字符 2.2.1 匹配多个字符串 2.2.2 替换字符串 2.2.3 统计字符出现次数 2.3 Qt中使用 3 regexp结构集合 3.1 表 ...

  7. 通配符(WildCard)与正则表达式(Regular Expression)

    1.通配符(wildcard)就是万用牌的意思 * 表示匹配任意长度的任意字符 ? 表示匹配一个任意字符 [-]则表示匹配括号中列出的字符中的任意一个 [!..]表示不匹配括号中列出的字符中的任意一个 ...

  8. php中ip地址的正则表达式,PHP_IP地址正则表达式匹配方法,正则表达式(Regular Expression, - phpStudy...

    IP地址正则表达式匹配方法 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个 ...

  9. Regular Expression:C++正则表达式库(RE库regex)

    正则表达式(Regular Expression)是一种描述字符序列的方法,是处理字符序列的一种强大的计算工具!(字符串的匹配.查找.替换) 1.ECMAScript :ECMA-262规范: ECM ...

  10. python 正则表达式(Regular Expression)基础学习笔记

    python 正则表达式(Regular Expression) 正则表达式基础 search():只返回第一个匹配的字符串 findall():将搜寻结果以列表方式返回 import re # 导入 ...

最新文章

  1. Linux时间转化方法
  2. UE选择合适的小区进行驻留以后
  3. 现代密码学1.3--古典密码/historical cipher
  4. mysql 多表混全_mysql--浅谈多表查询1
  5. php secket5,《Thinkphp5使用Socket服务》 入门篇
  6. 11.抓取JavaScript
  7. Gcode G4及M603定义
  8. Android Canvas API总结和使用方法
  9. npm shrinkwrap的用途
  10. Unity TimeLine学习笔记
  11. 蒙特卡罗算法 与 拉斯维加斯算法
  12. 通过uart串口和printf函数打印
  13. Oracle——函数(单行函数、分组函数、分析函数)
  14. Polkadot波卡链众筹成本价与总量、创始人团队简介
  15. 蜂鸟E200模块分析——IFU:Simple-BPU
  16. Karatsuba-Ofman乘法器
  17. html5红外遥控,做了个小的红外遥控装置
  18. 计算机网络技术企业环境,浅谈高职院校计算机网络技术专业教学环境建设
  19. Linux内核进程调度时机和过程
  20. 自下而上构建NFT社区

热门文章

  1. 会汇编语言再学c语言,只有C语言功底的我学习汇编语言可以吗?
  2. 计算机应用基础word表说课,制作word表格说课课件.ppt
  3. c语言中.h文件中的宏定义,endian.h这个头文件里面的宏可以直接用么?
  4. 基于LM567制作的反射式红外检测电路,用于节能信标检测电路
  5. 全国高校大学生竞赛质量提升工作推进会
  6. 机器学习 python_送书 | 深入浅出Python机器学习
  7. 计算机所在网络最多可实际分配,网络技术应用1
  8. nginx php_admin_value,新手求租 能否贴一下nginx的静态配置
  9. html5动态气泡效果6,[jQuery]Canvas气泡动态背景效果
  10. oracle存储过程00054,oracle执行存储过程报错:ORA-12011