正则表达式(Regular Expression)
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)相关推荐
- 初步了解并使用正则表达式 (REGular EXPression)
正则表达式(REGular EXPression),正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.只有掌 ...
- java正则表达式及api_JAVA常用API:正则表达式regular expression
一.正则表达式的概念 正则表达式,regular expression,在代码中通常简写成regex 正则表达式是一个字符串,使用每单个字符串来描述.定义匹配规则,匹配一系列符合某个语法规则的字符串. ...
- 正则表达式 匹配点号_Python入门:正则表达式(Regular Expression)
正则表达式用来干嘛 正则表达式是用来匹配文本的一种语言.别被语言吓到,正则表达式其实非常简单,可能你花2个小时就能用起来,但是你一定会觉得非常强大,像非常厉害的数据爬取,网页爬虫,都要用到正则表达式! ...
- oracle的正则表达式(regular expression)简单介绍
目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境. Oracle 10g正则表达式提高了SQL灵活性.有效的解 ...
- 正则表达式Regular Expression
<编译原理>第三章习题 我们的教材是那本经典的"龙书":<Compiler: Principles, Techniques, and Tools> 灰常灰常 ...
- 正则表达式(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 表 ...
- 通配符(WildCard)与正则表达式(Regular Expression)
1.通配符(wildcard)就是万用牌的意思 * 表示匹配任意长度的任意字符 ? 表示匹配一个任意字符 [-]则表示匹配括号中列出的字符中的任意一个 [!..]表示不匹配括号中列出的字符中的任意一个 ...
- php中ip地址的正则表达式,PHP_IP地址正则表达式匹配方法,正则表达式(Regular Expression, - phpStudy...
IP地址正则表达式匹配方法 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个 ...
- Regular Expression:C++正则表达式库(RE库regex)
正则表达式(Regular Expression)是一种描述字符序列的方法,是处理字符序列的一种强大的计算工具!(字符串的匹配.查找.替换) 1.ECMAScript :ECMA-262规范: ECM ...
- python 正则表达式(Regular Expression)基础学习笔记
python 正则表达式(Regular Expression) 正则表达式基础 search():只返回第一个匹配的字符串 findall():将搜寻结果以列表方式返回 import re # 导入 ...
最新文章
- Linux时间转化方法
- UE选择合适的小区进行驻留以后
- 现代密码学1.3--古典密码/historical cipher
- mysql 多表混全_mysql--浅谈多表查询1
- php secket5,《Thinkphp5使用Socket服务》 入门篇
- 11.抓取JavaScript
- Gcode G4及M603定义
- Android Canvas API总结和使用方法
- npm shrinkwrap的用途
- Unity TimeLine学习笔记
- 蒙特卡罗算法 与 拉斯维加斯算法
- 通过uart串口和printf函数打印
- Oracle——函数(单行函数、分组函数、分析函数)
- Polkadot波卡链众筹成本价与总量、创始人团队简介
- 蜂鸟E200模块分析——IFU:Simple-BPU
- Karatsuba-Ofman乘法器
- html5红外遥控,做了个小的红外遥控装置
- 计算机网络技术企业环境,浅谈高职院校计算机网络技术专业教学环境建设
- Linux内核进程调度时机和过程
- 自下而上构建NFT社区
热门文章
- 会汇编语言再学c语言,只有C语言功底的我学习汇编语言可以吗?
- 计算机应用基础word表说课,制作word表格说课课件.ppt
- c语言中.h文件中的宏定义,endian.h这个头文件里面的宏可以直接用么?
- 基于LM567制作的反射式红外检测电路,用于节能信标检测电路
- 全国高校大学生竞赛质量提升工作推进会
- 机器学习 python_送书 | 深入浅出Python机器学习
- 计算机所在网络最多可实际分配,网络技术应用1
- nginx php_admin_value,新手求租 能否贴一下nginx的静态配置
- html5动态气泡效果6,[jQuery]Canvas气泡动态背景效果
- oracle存储过程00054,oracle执行存储过程报错:ORA-12011