正则表达式入门
来源:互联网 发布:儒道数据分析地址 编辑:程序博客网 时间:2024/06/08 16:51
正则表达式入门
要谈论正则表达式,就得先了解一下POSIX。POSIX的全称是PortableOperating System Interface for uniX,它由一系列规范构成,定义了UNIX操作系统应当支持的功能,它定义了BRE(Basic Regular Expression,基本型正则表达式)和ERE(Extended Regular Express,扩展型正则表达式)两大流派。
正则表达式由只代表自身的字面值和代表特定含义的元字符组成,除非特别说明,正则表达式严格区分大小写。正则表达式的大致匹配过程是:
1.依次拿出表达式和文本中的字符比较,
2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3.如果表达式中有量词或边界,遵循量词或边界指定的规则来匹配。
扩展正则表达式与基础正则表达式的区别在于:? + () {} 这几个字符。
基础正则表达式中,如果你想? + () {}表示特殊含义,你需要将他们转义
而扩展正则表达式中,如果你想? + () {} 不表示特殊含义,你需要将他们转义。
所谓特殊含义,就是正则表达式中的含义。非特殊含义,就是这个符号本身。
+,和*中大家会遇到贪婪模式的说法,也有称最长匹配原则,本质就是趋向于最大长度匹配,
基本正则表达式(BRE)
字符匹配
(匹配的时候需要使用两个方括号,如[[ :alpha:]])
. 表示任意单个字符,.会匹配除了换行符的任意字符
[ ] 表示匹配范围内的任意单个字符
[^ ] 表示匹配范围外的任意单个字符
[:alpha:] 任意一个字母(相当于a-zA-Z)
[:upper:] 任意一个大写字母(相当于A-Z)
[:lower:] 任意一个小写字母(相当于a-z)
[:digit:] 任意一个数字(相当于0-9)
[:space:] 水平和垂直的空白字符(比blank包含的更多)
[:blank:] 空白字符(空格和制表符)
[:punct:] 标点符号
[:alnum:] 任意字母和数字(相当于0-9a-zA-Z)
[:print:] 可打印字符
匹配次数
* 表示*号前面的一个字符的0-N次(它有一个贪婪模式,会尽量匹配最长)
.* 表示任意多个长度的字符
\? 表示\?符号前的字符0-1次
\+ 匹配\+前的字符至少1次
\{m,n\} 表示\{m,n\}符号前的字符的m-n次
\{m\} 表示{m\}符号前的字符m次
\{n,\} 表示匹配前面字符至少n次
\{,n} 表示匹配前面字符最多n次
位置锚定
^ 之后接字符 表示^ 之后的字符出现在行首
$ 之前接字符 表示$之前的字符出现在行尾
\> 表示\> 符号之后的字符出现在单词的尾部
\< 表示\< 之前的字符出现在单词的首部
\<字符 \> 表示只有小于号和大于号之间的字符
分组
分组 : \(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如: \(root\)+
后向引用 : 引用前面的分组括号中的模式所匹配字符,而非模式本身
或者 : \|
拓展正则表达式(ERE)
字符匹配
. 表示任意单个字符,.会匹配除了换行符的任意字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[ : alnum : ] 字母和数字
[ : alpha : ] 代表任何英文大小写字符,亦即 A-Z, a-z
[ : lower : ] 小写字母
[ : upper : ] 大写字母
[ : blank : ] 空白字符(空格和制表符)
[ : digit : ] 十进制数字
[ : xdigit : ] 十六进制数字
[ : graph : ] 可打印的非空白字符
[ : print : ] 可打印字符
[ : punct : ] 标点符号
匹配次数
*: 匹配前面字符任意次,包括0次
? : 0或1次
+: 1次或多次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次
位置锚定
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词
分组
():分组,后面可以使用1 ,2 ,3...引用前面的分组
a|b : a或b
优先级
优先级
符号
1
\
2
( )、(?: )、(?= )、[ ]
3
*、+、?、{n}、{n,}、{m,n}
4
^、$
5
|
实战
1找出/etc/rc.d/init.d/functions的基名(basename可以直接获取)。
2 找出/etc/rc.d/init.d/functions的目录名(dirname可以直接获取)。
3 统计last命令中以root用户登录的每个主机IP登录次数。
4 显示ifconfig命令中所有的IPV4地址。
5显示/etc/passwd中以/bin/bash结尾的行。
- 正则表达式入门
- 正则表达式[入门]
- 正则表达式入门
- 正则表达式入门
- 正则表达式入门
- 入门正则表达式例子
- 正则表达式入门
- 正则表达式入门
- 正则表达式入门文档
- 正则表达式入门
- java正则表达式入门
- 正则表达式入门
- 正则表达式快速入门
- 正则表达式快速入门
- 正则表达式入门
- 正则表达式入门
- 正则表达式快速入门
- 正则表达式快速入门
- 不同类型数据间的转换
- HihoCoder
- 阿里云域名+老薛主机 搭建个人博客网站 小结
- 根据条件控制Grid列能否编辑
- RESTful笔记
- 正则表达式入门
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 多校联合赛第二场Mammum Sequence(贪心)
- Codeforces Round #425 (Div. 2)比赛总结
- svn
- JavaSE异常类
- 函数的调用过程
- HTML5中的Workers多线程处理
- 对象转型