精通正则表达式读书笔记(一)

本文深入探讨了正则表达式的高级用法,包括元字符、分组与引用、非捕获型括号等概念,并通过实例展示了如何利用这些特性进行高效匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 元字符:.*?^[]+等。

1. [abc]与(a|b|c)的区别:前者匹配普通字符,也就是说[]里面的都是普通字符,即使是.?*也一样([^除外,表示否定,-也除外,表示范围)。而(a|b|c)里的()模式内,不仅仅可以用普通字符,还可以用更复杂的表达式。

2. egrep -options 'pattern' file

e.g., egrep -i '^abc' thefile

3. 单词分界符:\<匹配单词开始,\>匹配单词结束。如\<cat匹配以cat开头的单词,cat\>匹配以cat结束的单词。而\<cat\>则精确匹配cat这个单词。注意通常在egrep中,单词的分界,使用字符和数字的开始/结束来标识,也就是说,abc-def会被认为是两个单词。

4. 反向引用:'(abc)\1',其中的\1引用了前面的第一个()分组的正则表达式。

5. 分组嵌套:在4中,如果出现(abc)(def)这样的分组,显然(abc)为\1,(def)为\2。但是如果出现嵌套的,如(abc(def))(gh),则(abc(def))为\1,(def)为\2,(gh)为\3。

6. 非捕获型括号:(?:...)。在5的例子中,如果希望(def)只分组,但不被捕获到\2中。可以用:(abc(?:def))(gh),这样,(abc(def))仍然为\1,但(gh)为\2。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值