正则表达式regexp快速学习
来源:互联网 发布:网络紅人思瑞 编辑:程序博客网 时间:2024/05/17 21:57
正则表达式
1. 正则表达式介绍
1.1 概念解释
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
以上百度百科抄袭【传送门】
1.2 引擎
- DFA
- 传统型NFA
- POSIX NFA
详细介绍还是继续看百度百科吧 (>﹏<) 【 传送门】
2. 正则表达式使用
2.1 表达式总览
2.2 常用元字符
2.2.1 内容性字符
2.2.2 功能性字符
2.3 使用技巧
正则表达式不支持逻辑计算。
编写正则表达式的思路:
1. 观察需要匹配的文本特点和规律。
2. 尝试性编写正则表达式,由简入深的编写。
3. 反复测试正则表达式和完善表达式。
单次匹配
单词列表
house
write
first
so
these
her
long
picture
point
animal
again
us
try
查找长度5,第二个字符是o的单词
.o...
(这样匹配的时候会匹配上部分文本,以下有解决方法)
第二位是o或i的单词
.[oi]...
该表达式会匹配picture、animal
的部分,解决这个问题可以在表达式两边加上\b
, 结果
\b.[oi]...\b
子表达式和重复匹配
子表达式是表示一个复杂匹配的单元,使用()括起来的一组复杂的正则表达式。
这里写一个正则来匹配正确的IP地址作为。
((\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])\.)((\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])\.)((\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])\.)(25[0-5]|1\d\d|2[0-4]\d|[12]\d|\d)
等价于
((\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(25[0-5]|1\d\d|2[0-4]\d|[12]\d|\d)
以上(\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])
和((\d|[12]\d|1\d\d|2[0-4]\d|25[0-5])\.)
是子表达式。
回溯引用
回溯引用需要将要匹配的表达式分组。以下给出两个示例。
匹配Html的中的h标签的文本段落
<h1>h1段落</h1><h1>h1段落</H1><h2>h21段落</h1><h2>h2段落</h2>
正确匹配的正则表达式
<([Hh][1-6])>.*</\1>
其中\1
就是回溯的([Hh][1-6])
表达式。查找文本中的相邻重复单词
文本This is a block of of text, serveral words here are are repeated, and and they should not be.
表达式
[ ](\w+)[ ]+\1
,会 将以上文本中的of of
、are are
和and and
查找出来。回溯替换,以下使用js代码作为示例了
var str = '2016-02-16';var reg = /(\d{4})-(\d{2})-(\d{2})/;var ret = str.replace(reg, "$1-$3-$2");console.log(ret);
贪婪匹配和非贪婪匹配
贪婪匹配,尽可能多的匹配文本,正则表达式默认启用的就是贪婪模式, +和都是贪婪匹配的字符;而非贪婪匹配,则是尽可能少的匹配文本,启用非贪婪模式则使用*?。
文本aaaaa
使用a+
(贪婪模式)则会匹配整段文本
而使用a+?
只则匹配文本中的单个a
字符;
html <div>第一段文本html内容</div><div>第二段html内容</div>
<div>.*</div>
表达式会匹配整段代码,即贪婪模式。
<div>.*?</div>
表达式只会匹配 <div>第一段文本html内容</div>
,即非贪婪模式。
- 正则表达式regexp快速学习
- Javascript RegExp正则表达式学习笔记
- 正则表达式(RegExp)的学习
- 正则表达式(RegExp)的学习
- js学习四-RegExp正则表达式
- 正则表达式(RegExp)对象
- RegExp正则表达式
- 正则表达式<RegExp>-详解
- Matlab-------regexp正则表达式
- RegExp正则表达式
- 正则表达式(regexp)
- RegExp 正则表达式
- 正则表达式 RegExp()//
- RegExp正则表达式
- javascript 正则表达式RegExp
- JavaScript正则表达式 RegExp
- 正则表达式(RegExp)
- 正则表达式RegExp
- hdu4289 Control最小割
- PID371 / [AHOI1997]彩旗飘飘 排列组合加DP
- 数据机构(10)--顺序循环队列的实现及相关操作
- latex学习笔记5 编写过程的使用技巧
- Android笔记---Intent实现Activity跳转
- 正则表达式regexp快速学习
- uva 10294 polya定理
- android中关联第三方jar源码与Javadoc
- 修行尚浅
- 一言(ヒトコト)Hitokoto API
- WebService调用天气接口例子
- Hadoop配置之伪分布
- iOS银联支付
- [从头学数学] 第101节 比例