学习正则表达式

字符简写式

字符简写式描述字符简写式描述
\d报警符\w单词字符
[\b]退格字符\W非单词字符
\c x控制字符\0空字符
\d数字字符\x xx字符的十六进制
\D非数字字符\u xxx字符的 Unicode 值
\o xxx字符的八进制

匹配各种空白符

字符简写式描述字符简写式描述
\f换页符\s空白符
\h水平空白符\S非空白符
\H非水平空白符\t水平制表符
\n换行符\v垂直制表符
\r回车符\V非垂直制表符

在 sed 中使用正则

  • 替换

 

$ echo Hello | sed s/Hello/Goodbye/
//Goodbye

* 插入

 

 

$ sed 's/^/<h1>/; s/$/<\/h1>/p; q'
Hello Sed
//<h1>Hello Sed</h>

在 Perl 中使用正则:

 

  • 替换

 

$ perl -ne 's/Hello/Goodbye/; print'
Hello
//Goodbye

* 插入

 

 

$ perl -ne 's/^/<h1>/; s/$/<\/h1>/m; print;'
Hello Perl
//<h1>Hello Perl</h1>

匹配元字符的字面值

 

元字符:.^$*+?|(){}[]\-

\Q$\E 或 \$匹配


正则表达式中的选项

选项描述选项描述
(?d)Unix 中的行(?i)不区分大小写
(?J)允许重复的名字(?m)多行
(?s)单行(dotall)(?u)Unicode
(?U)默认最短匹配(?x)忽略空格和注释
(?-…)复原或关闭选项

Perl 语言中的修饰符

修饰符描述
a匹配\d、\s、\w 以及处于 ASCII 范围内的 POSIX 字符
c匹配失败后停留在当前位置
d使用默认的本地平台规则
g全局匹配
i不区分大小写
1使用当前位置的规则
m多行匹配
p保留匹配的字符串
s将字符串看做一行内容
u匹配时使用 Unicode 规则
x忽略空格及注释

POSIX 字符组

字符组描述
[[:alnum:]]匹配字母及数字
[[:alpha:]]匹配大小写字母
[[:ascii:]]匹配 ASCII 字符
[[:space:]]匹配空格和制表符
[[:blank:]]匹配空格字符
[[:ctrl:]]匹配控制字符
[[:digit:]]匹配数字
[[:graph:]]匹配图形字符
[[:lower:]]匹配小写字母
[[:print:]]匹配可打印字符
[[:punct:]]匹配标点符号
[[:upper:]]匹配大写字母
[[:word:]]匹配单词字符
[[:xdigit:]]匹配十六进制数字
[[:^alpha:]]匹配非字母字符

Unicode 中文:[\u4e00-\u9fa5]

量词

语法描述语法描述
?零个或一个(可选)??懒惰匹配零次或一次(可选)
+一个或多个+?懒惰匹配一次或多次
*零个或多个*?懒惰匹配零次或多次
{n}精确匹配 n 次{n}? 懒惰匹配 n 次
{n,}匹配 n 次或更多次{n,}懒惰匹配 n 次或多次
{m,n}匹配 m 至 n 次{m,n}懒惰匹配 m 至 n 次
{0,1}与? 相同
{1,}与 + 相同
{0,}与 * 相同
语法描述
(?=exp)正前瞻,匹配 exp 前的位置
(?!exp)反前瞻,匹配后面不是 exp 的位置
(?<=exp)正后顾,匹配 exp 后面的位置
(?<!exp)反后顾,匹配前面不是 exp 的位置
Examples

国内电话号码: ^(\(\d{3}\))\d{8}|(\(\d{4}\))\d{7,8}|\d{3}-\d{8}|\d{4}-\d{7,8}$
(010)12345678、(0755)1234567、010-12345678、0755-1234567

电子邮箱: [\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?


强烈推荐: 《正则表达式 30 分钟入门教程》

至于图灵的《学习正则表达式》,个人不建议买,里面的内容“30 分钟”都有,如果想进一步学习正则表达式,推荐直接看《精通正则表达式(第 3 版)》或《正则表达式经典实例》。

另外推荐几款正则工具:

  1. RegExr,可通过浏览器使用,或者下载 Windows 或 Mac 版。
  2. Reggy,可选择不同的语言环境(PS:不同的语言环境下对正则的支持还是有细微的差别的)
  3. RegexKitTool,笔者为了测试 Cocoa 下对正则的支持开发的一款 Mac 下的正则工具。

Posted by XiaoYi_HD - 5月 22 2013
如需转载,请注明: 本文来自 Esoft Mobile

转载于:https://www.cnblogs.com/tracy-e/p/3151465.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值