正则表达式 基础概念
来源:互联网 发布:如果民国没有灭亡 知乎 编辑:程序博客网 时间:2024/05/21 17:35
特殊字符
所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。
- 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{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 '?!' 来忽略对相关匹配的保存。
- 正则表达式 基础概念
- 正则表达式的基础概念和基础用法
- 正则表达式概念详解
- 正则表达式的概念
- 正则表达式概念篇
- 正则表达式基础表达式
- Python 正则表达式---概念基础,匹配过程,表达式元字符和语法以及实例
- 正则表达式的组概念
- 正则表达式中的核心概念
- 正则表达式(引入概念)
- 正则表达式教程 概念+实战
- 正则表达式中的数量词概念
- 正则表达式基础
- 正则表达式基础
- 正则表达式基础
- 正则表达式基础
- 正则表达式基础
- 正则表达式基础
- 有时候,你需要做的就是闭嘴,放下所谓的自尊,承认自己的错误。这不叫放弃,而叫成长。
- activeMQ死消息队列的管理
- 跨域访问实现依据
- C#判断上传文件是否是图片,防止木马上传
- 解决NSXmlParser无法解析非utf-8编码的XML问题的方法
- 正则表达式 基础概念
- 73种网页常用js代码
- 前几天刚申请了博客
- 启动tomcat时报错“连接错误”
- 关于C语言中getopt()函数的使用方法
- Hibernate二级缓存
- 《深入浅出MFC》读书笔记
- 聚簇索引
- Linux文件打包压缩命令 tar