• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 正则表达式学习笔记

正则表达式学习笔记

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了正则表达式学习笔记等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
正则表达式学习笔记
  正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含 
有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
  列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的* 
的含义是不同的。
  为便于理解和记忆,先从一些概念入手,所有特殊字符或字符组合有一个总表在后面,最后一 
些例子供理解相应的概念。
正则表达式
  是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达 
式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
  可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式, 
即/expression/
普通字符
  由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符 
,所有数字,所有标点符号以及一些符号。 
非打印字符
字符  含义 
\cx  匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z  
或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 
\f  匹配一个换页符。等价于 \x0c 和 \cL。 
\n  匹配一个换行符。等价于 \x0a 和 \cJ。 
\r  匹配一个回车符。等价于 \x0d 和 \cM。 
\s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 
\S  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 
\t  匹配一个制表符。等价于 \x09 和 \cI。 
\v  匹配一个垂直制表符。等价于 \x0b 和 \cK。 
特殊字符
  所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任 
何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls  
\*.txt。正则表达式有以下特殊字符。
特别字符 说明 
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n'  
或 '\r'。要匹配 $ 字符本身,请使用 \$。 
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使 
用 \( 和 \)。 
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 
[  标记一个中括号表达式的开始。要匹配 [,请使用 \[。 
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹 
配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。 
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹 
配 ^ 字符本身,请使用 \^。 
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。 
| 指明两项之间的一个选择。要匹配 |,请使用 \|。 
  构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表 
达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围 
、字符间的选择或者所有这些组件的任意组合。
限定符
  限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n} 
或{n,}或{n,m}共6种。
*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以 
实现非贪婪或最小匹配。
  正则表达式的限定符有:
字符  描述 
*  匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 
+  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+  
等价于 {1,}。 
?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "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?'。请注意在逗号和两个数之间不能有空 
格。 
定位符
  用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界, 
\B表示非单词边界。不能对定位符使用限定符。
选择
  用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是 
相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
  其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预 
查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任 
何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
后向引用
  对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中, 
所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区 
编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n  
为一个标识特定缓冲区的一位或两位十进制数。
  可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。
各种操作符的运算优先级
  相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低 
如下:
操作符  描述 
\  转义符 
(), (?:), (?=), []  圆括号和方括号 
*, +, ?, {n}, {n,}, {n,m}  限定符 
^, $, \anymetacharacter  位置和顺序 
|  “或”操作 
全部符号解释
字符  描述 
\  将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符 
。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 
^  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或  
'\r' 之后的位置。 
$  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或  
'\r' 之前的位置。 
*  匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 
+  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+  
等价于 {1,}。 
?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。?  
等价于 {0,1}。 
{n}  n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11读懂正则表达式就这么简单
  • 2017-05-11JavaScript正则表达式验证代码(推荐)
  • 2017-05-11JavaScript 正则表达式之RegExp属性、方法及应用分析
  • 2017-05-11乱象,印迹 正则学习问答
  • 2017-05-11获取网址路径的正则
  • 2017-05-11javascript RegExp 对象属性与方法和应用
  • 2017-05-11好东西,老外用正则表达式写的HTML分离函数
  • 2017-05-11最新手机号码、电话号码正则表达式
  • 2017-05-11PHP中过滤常用标签的正则表达式
  • 2017-05-11js正则表达式学习和总结(必看篇)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • js正则表达式之RegExp对象属性lastIndex,lastMatch,lastParen,lastContext,rightContext属性讲解
    • js中string之正则表达式replace方法详解
    • 正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式
    • 又一不错的应用-正则来查找替换字符串
    • VBscript 的正则表达式 字符串匹配
    • 正则表达式——匹配规则介绍
    • 正则表达式全局匹配模式(g修饰符)
    • 正则表达式中的"g"是什么意思附件参数g的用法
    • DreamWeaver中使用正则技术搜索
    • 判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有