正则表达式学习笔记

Regular Expression


最近看了一本书,《正则表达式必知必会》,整理了学习笔记


正则表达式的用途:
搜索
替换


如何理解正则表达式:
内置于其他语言或软件产品里的“迷你”语言


区分字母大小写



-------

.  匹配任意单个字符
[root@localhost tmp]# cat a.txt
book.xls
book2.xls
book3.xls
na1.xls
na2.xls
sa.xls
[root@localhost tmp]# cat a.txt | grep book.
book.xls
book2.xls
book3.xls
[root@localhost tmp]# cat a.txt | grep .a..
na1.xls
na2.xls
sa.xls
[root@localhost tmp]# cat a.txt | grep .a.\.xls    //转义
na1.xls
na2.xls
[root@localhost tmp]#


匹配字符集合中的任意一个字符
[]  定义一个字符集合
[A-Za-z0-9]  区间  
[abc]  列举
[root@localhost tmp]# cat a.txt
book.xls
book2.xls
book3.xls
na1.xls
na2.xls
sa.xls
[root@localhost tmp]# cat a.txt | grep k[23]
book2.xls
book3.xls
[root@localhost tmp]#


^ 对字符集合进行取非匹配
[^0-9]  匹配非0-9的字符
[root@localhost tmp]# cat a.txt
book.xls
book2.xls
book3.xls
na1.xls
na2.xls
sa.xls
[root@localhost tmp]# cat a.txt | grep k[^2]
book.xls
book3.xls
[root@localhost tmp]#




------

元字符:在正则表达式里有特殊含义的字符

空白元字符
[\b]  回退并删除  Backspace
\f    换页符
\n    换行符
\r    回车符
\t    制表符
\v    垂直制表符


类元字符
\d   任何一个数字字符  等价于 [0-9]
\D   任何一个非数字字符  等价于 [^0-9]

\w   任何一个字母(大小写均可) 数字 以及下划线   等价于 [A-Za-z0-9_]
\W   任何一个非字母数字或非下划线字符   等价于 [^A-za-z0-9_]

\s   任何一个空白字符   等价于 [\f\n\r\t\v]            // [\b]元字符是个特例,它不在类元字符\s的覆盖范围内
\S   任何一个非空白字符   等价于 [^\f\n\r\t\v]




------------------

重复匹配

+      匹配一个或多个字符(或字符集合)   
\d+    一个或多个数字
[\d.]+ 一个或多个数字及.字符

*       匹配零个或多个字符(或字符集合)    
\d*     数字是可选的,可以没有,也可以有多个
[\d.]*  数字及.字符是可选的,可以没有,也可以有多个


?       匹配零个或一个字符(或字符集合)
https?  匹配http或者https

{3}               给匹配次数设定一个精确的值
#[[:xdigit:]]{6}  十六进制数字匹配6次,如匹配#00FFBB

{2,4}  给匹配次数设定一个区间
\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}  
上面的正则表达式将匹配:
4/8/03
10-6-2004

{3,}  给匹配次数设定一个最小值
\$\d{3,}
上面的正则表达式将匹配:
$222
$1200
$67000


元字符分 贪婪型 和 懒惰型 两种
常用贪婪型元字符和它们的懒惰型版本:
+       +?
*       *?
{n,}   {n,}?




----------

位置匹配

\b 单词边界    格式:\bcat   cat\b   \bcat\b

\B 非单词边界

^ 字符串边界,开头位置

$ 字符串边界,结尾位置

(?m)  分行匹配     m:multiline mode

^ $ 跟 (?m) 一起使用,正则表达式引擎会把 行分隔符 当作一个 字符串分隔符 来对待,^ 和 $ 还将匹配换行符开头或结尾的字符串




-----------

子表达式

( ){2}
匹配结果   
如果是 {2}  会把{2}前面的;符号重复2次  匹配结果如  ;;;

子表达式的作用:对重复次数元字符的作用对象做出精确的控制



(19|20)\d{2}
| 或操作符
匹配年份,结果如1990,2012等
如果是19|20\d{2},则解释为19或20\d{2}   因为|符号把位于它左边和右边的两个部分都作为一个整体来看待

子表达式的作用:对|操作符的OR条件做出准确定义



子表达式可以嵌套



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值