目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

正则表达式是用来匹配一类字符串的一种模式

正则表达式的功能:字符串的查找、替换以及分割

应用领域广泛

Perl、PHP、Java、C++、C#、Python、 Xpath、.Net、

JavaScript、Jscript

Oracle、Mysql、Unix、Linux

正则语法:

正则表达式主要组成:

      1 原子(普通字符,如英文字符)

      2 元字符(有特殊功用的字符)

      3 模式修正字符(对正则表达式语义的修正)

一个正则表达式中至少包含一个原子。

===========华丽的分割线=======================

1 原子

原子是组成正则表达式的基本单位,在分析正则表达式时,应作为一个整体。

原子字符包括所有的英文字母、数字、标点符号以及其他一些符号。原子也包括以下内容。

单个字符、数字,如a~z,A~Z,0~9。

         模式单元,如(ABC)可以理解为由多个原子组成的大的原子。

         原子表,如 [ABC]。

         重新使用的模式单元,如:\\1

        普通转义字符,如:\d, \D, \w

         转义元字符,如:\*,\.

2 元字符

元字符是用于构造规则表达式的具有特殊含义的字符。如果要在正则表达式中包含元字符本身,必须在其前加上”\”进行转义

元字符                       说明

.                                    匹配除换行之外的任何一个字符

*                                   0次、1次或多次匹配其前的原子

+                                   1次或多次匹配其前的原子

?                                   0次或1次匹配其前的原子

|                                   匹配两个或多个选择

^ 或  \A                            匹配字符串串首的原子

$ 或  \Z                           匹配字符串串尾的原子

\b                                 匹配单词的边界

\B                        匹配除单词边界以外的部分

[]                                   匹配方括号中的任一原子

[^xyz]                          匹配除方括号中的原子外的任何字符

{m}                      表示其前原子恰好出现m次

{m,n}                           表示其前原子至少出现m次,至少出现n次(n>m)

{m,}                    表示其前原子出现不少于m次

()                                   整体表示一个原子

3 模式修正字符

在PCRE表达式中的最后一个分隔符/后,可以添加模式修正符,扩展了正则表达式在字符匹配、替换操作时的某些功能,修正增强了正则表达式的处理能力。模式修正符一般标记于整个模式之外,并且可以组合使用,如“/apple/i”、“/cat|dog/uis”等。

模式修正符                                 说明

i                  -可同时匹配大小写字母

s                 -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符

m               -将字符串视为多行

x                 -模式中的空白忽略不计

S                 - 当一个模式将被使用若干次时,先对其进行分析

U                -匹配到最近的字符串

e                -将替换的字符串作为表达使用

============================华丽分割线==========================

原子说明

--------------------------------------------------------------------------------

\d               匹配一个数字;等价于[0-9]

\D              匹配除数字以外任何一个字符;等价于[^0-9]

\w              匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]

\W             匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]

\s               匹配一个空白字符;等价于[\f\n\r\t\v]

\S               匹配除空白字符以外任何一个字符;等价于[^\f\n\r\t\v]

\n               匹配一个换行符;等价于 \x0a 或 \cJ

\r               匹配一个回车符等价于\x0d 或 \cM

\t               匹配一个制表符;等价于 \x09\或\cl

\f                匹配一个换页符等价于 \x0c 或 \cL

\v               匹配一个垂直制表符;等价于\x0b或\ck

\oNN           匹配一个八进制数字

\xNN           匹配一个十六进制数字

\cC             匹配一个控制字符

例如,在字符串“Tom and Jerry chased each other in the house until tom’s uncel come in”中

元字符“^”或“\A” 置于字符串的开始确保模式匹配出现在字符串首端;

/^Tom/

元字符“$”或“\Z” 置于字符串的结束,确保模式匹配出现字符串尾端。

/in$/

如果不加边界限制元字符,将获得更多的匹配结果。

/^Tom$/精确匹配            /Tom/模糊匹配

例如:在字符串“This island is a beautiful land”中

元字符“\b”对单词的边界进行匹配;

/\bis\b/    匹配单词“is”,不匹配“This”和“island”。

/\bis/        匹配单词“is”和“island”中的“is”,不匹配“This”

元字符“\B”对除单词边界以外的部分进行匹配。

/\Bis\B/    将明确的指示不与单词的左、右边界匹配,只匹配单词 的内部。所以在这个例子中没有结果。

/\Bis/        匹配单词“This”中的“is”

转载于:https://www.cnblogs.com/zcy_soft/archive/2011/08/06/2129488.html

正则表达式 小结 经典解决方案[1]相关推荐

  1. js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...

    正则表达式(括号).[中括号].{大括号}的区别小结,正则表达式小结 正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*) ...

  2. [转]FINDSTR正则表达式小结

    前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定 ...

  3. Python 正则表达式小结1

    [声明]:本文参考了白夜黑雨老师的网页讲解.如有侵权,请与我联系!!! Python 正则表达式小结1 1. 正则表达式验证 2. 特殊元字符及含义 3 匹配某种字符类型 4. 正则表达式举例 大收藏 ...

  4. 免费资源:原来超人rman也会哭+4031经典解决方案

    2014年9月27日-技术沙龙<4031经典解决方案>-北京-免费,原文地址: http://cuug.com.cn/html/activityinfor_283_283_1084.htm ...

  5. FINDSTR正则表达式小结

    前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定 ...

  6. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  7. C# 正则表达式小结

    只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~ ...

  8. 【转】C#正则表达式小结

    只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~ ...

  9. python正则表达式案例_Python正则表达式使用经典实例

    regex=ur"" #正则表达式 match = re.search(regex, subject) if match: # match start: match.start() ...

最新文章

  1. szu cf套题训练Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3)A~D题解报告
  2. 使用poi进行数据的导出Demo
  3. Day11多态部分-5
  4. Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题
  5. 一个小老板从小公司创业开始做起的过程记录
  6. 使用代码片段的正确姿势,打造高效的vscode开发环境
  7. @mapperscan注解_Spring的@Import注解详解
  8. 【学习笔记】网络层:应用模型、DNS系统、文件传输协议FTP
  9. 函数节流之debounce
  10. mfc 更新服务器文件,MFC程序版本自动升级更新
  11. 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。
  12. WebSocket 解决javascript跨域问题一剂良药
  13. GPS/BDS:LAC区域码和CELLID移动基站ID
  14. 大屏拍照游戏神器来袭,OPPO R11 Plus今日首销
  15. cpuz测试分数天梯图_最新手机处理器天梯图出炉:第一实至名归,你手机处理器排名高吗...
  16. 谭浩强 C程序设计(第五版)
  17. Boost库异步IO
  18. 笔记本一接上HDMI转VGA转换器就黑屏,无法操作连接显示器
  19. 微信订阅号利用订阅号助手发布信息
  20. 大学计算机专业用ipad pro够用吗,苹果iPad Pro上很合适学生党的几个专业App

热门文章

  1. java32位无符号数_用C语言解释32位无符号长单精度IEEE-754浮点数
  2. mysql peferences_MySQL初次实践
  3. android使用桢布局,Android性能优化UI篇
  4. C语言取字节的第n二进制,学C语言的看过来,最完整进制转换、整数和小数内存存储模型...
  5. 使用命令创建mysql_用命令创建MySQL数据库
  6. android 宏替换_android 模拟宏定义,实现Debug amp; Release 模式-一团网
  7. Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2(无图形化安装)
  8. mysql profile 查谒_MYSQL查询优化:profile功能
  9. gamma分布python代码_Python sympy.stats.NormalGamma()用法及代码示例
  10. 设计一个名为complex的类来表示复数_天线波束设计