《精通正则表达式》笔记

 

1. 多选结构

(mm|gg) 表示匹配 "mm"或"gg"

 

2. 忽略大小写

s/source/dest/i

搜索source,将其替换为dest,此处的i只对source起作用,而不会作用于dest。

 

3. 单词分界符

/< 用来匹配单词的开始

/> 用来匹配单词的结束

比如: /<cat 表示匹配以"cat"开头的单词,如cate

cat/>匹配以"cat"结尾的单词,如scat

则:/<cat/> 必须精确匹配 "cat"

 

4. 捕获括号及"反向引用"

在有些支持"反向引用"的地方,括号可以用来表示记忆,这种括号称为捕获括号,在后面,可以通过/1、/2、/3等来引用括号内匹配的表达式。(或用$1、$2等引用)

如:m//<([A-Za-z]+)/s/1/>/g

表示搜索两个相邻的,重复的单词。

/s表示任意多个空白字符。

/1就表示前面 ([A-Za-z]+)匹配到的内容。 所以,这个表达式的意思就是在开始找到一个单词,然后再判断它后面的那个单词,是否是一样的。

注意,如果用 (?:...)括号的话,它就不会起捕获作用了,它只起分组的作用。

 

5. 字符组

字符组是放在[]中的部分。

它类似于宿主语言中的一个子语言,它里面定义的元字符与宿主语言的很不相同。

[^...] 排除型字符组

 

6. 一些转义字符

/s 可以匹配任何“空白”字符,包括空格、tab、进纸符等。

/S 与/s相反,除/s之外的。(注意,它必要要匹配“字符”!如果不能匹配空)

/d [0-9],即数字。

/D 除/d之外的。

/w [a-zA-Z0-9],即匹配一个包含数字、字母的单词。

/W 除/w之外的。

/b 可以匹配单词起始 或 单词结束。

 

7. 环视功能

环视是用来在字符串不匹配任何字符,只匹配文本中的位置,注意,只是位置。

顺序环视:从左至右查看文本,尝试匹配子表达式,如果能够匹配,就返回匹配成功信息。

1) 肯定顺序环视:(?=...)

如:

文本信息为:my test string.

表达式: s/(?=test)/first /i

它就能匹配到test左边的位置!

然后用first 来替换这个位置,因为它只是一个位置,所以实际上就是插入。(实际上就像: s/^/yeah/g 中的^,在每行的开头插入"yeah")

最后经过处理的文本信息为:

my first test string.

2) 否定顺序环视:(?!...)

子表达式不能匹配右侧文本。

如:(?!/d),就表示该位置的右边不是数字的时候,就匹配成功。

3) 肯定逆序环视:(?<=...)

子表达式能够匹配左侧文本。

如:(?<=/d/d/d),就表示,在该位置的左边,必须是3个数字时才会匹配成功。

如:test321ff,如果用上面的表达式来匹配,最终匹配的位置是1的后面,f的前面。

4) 否定逆序环视:(?<!...)

子表达式不能匹配左侧文本。

 

8. 条件判断

结构:(?if then |else)

如:(god)?(?(1)pig|ciahi)

这个表达式就能产生这样的效果:

如果"god"参与了匹配,在它之后继续尝试匹配pig,如果god没有参与匹配,就会尝试匹配ciahi。

比如文本是: "godpi is not ciahi", 存在123.txt中。

在perl中使用如下命令:

perl -p -e "s/(god)?(?(1)pig|ciahi)/haha/g" 123.txt

就会输出:godpi is not haha

再如:(?(?<=NUM:)/d+|/w+)

如果出现了"NUM:",就会在它后面尝试匹配/d+,即一些数字。

如果没有出现"NUM:",就只匹配/w+,即普通单词。

 

9. 忽略优先量词 *?、+?、??

普通的量词*、+、?在匹配的时候,会匹配尽可能多的字符。

如:文本为:who is No. 5555?

则表达式 5+ 会将4个5全都匹配。

而忽略优先量词,匹配的时候只匹配尽可能少的字符。

表达式 5+? 只会匹配1个5.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
正则表达式是一种用来描述和匹配字符串模式的工具。通过了解和掌握正则表达式,可以更高效地处理和操作文本数据。 精通正则表达式PDF是一本详细介绍和讲解正则表达式的电子书,其内容涵盖了正则表达式的基础知识和高级应用技巧。 首先,这本PDF将从基础知识开始介绍正则表达式的语法和常用的元字符,包括字符类、限定符、分组和捕获等。通过学习这些基础知识,读者可以了解如何构建简单的正则表达式来匹配指定的字符串模式。 其次,这本PDF还介绍了正则表达式的高级用法,例如反向引用、零宽断言和嵌入代码等。这些高级技巧可以帮助读者更准确地定位和捕获特定的字符串内容。 除了语法和用法介绍,这本PDF还提供了大量的实例和案例分析,通过具体的示例来演示如何使用正则表达式解决常见的文本处理问题。这些实例覆盖了从简单的字符串匹配到更复杂的文本提取和替换等不同应用场景。 此外,这本PDF还介绍了一些常用的正则表达式工具和库,如Python的re模块和JavaScript的RegExp对象等。这些工具和库提供了更便捷和高效的正则表达式操作方式,读者可以根据自己的需要选择和使用。 总结来说,精通正则表达式PDF是一本系统和全面介绍正则表达式的电子书,通过学习这本书,读者可以掌握正则表达式的基础知识和高级应用技巧,并且能够运用正则表达式解决实际的文本处理问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值