正则表达式 高级知识

2021-04-07  本文已影响0人  七维树

1.BRE(Basic Regular Expression) 和 ERE(Extended Regular Expression)

主要区别在于(、)、{、}、+、?、| 这7个特殊字符的使用方法上:
- BRE中:这7个需要转义才有特殊含义:(, +
- ERE中:默认是有特殊含义的,需要转义才能取消特殊含义

2.字符类别操作符[: ... :]

[: alnum :] -> 所有数字和大小写字母A-za-z0-9 (\w)
[: alpha :]  -> 所有大小写字母a-zA-Z
[: lower :]  -> 小写字母
[: upper :]  -> 大写字母
[: digit :]   -> 数字0-9 (\d)
[: xdigit :]  -> 16进制字符A-Fa-f0-9
[: punct :] -> 标点符号
[: space :] -> 空白字符
[: blank :]  -> 空格和TAB
[: cntrl :]   -> 控制符
[: graph :] -> 可视字符
[: print :]   -> 可视字符和空格

3.正则表达式操作符优先级

//优先级由高到低
1,[: ... :] 
2,\
3,[ ... ]
4,( ... )
5,* + ? {m,n}
6,.
7,^ $
2,|

4.贪婪模式、勉强模式、侵占模式

贪婪 勉强(?) 侵占(+)
x? x?? x?+
x* x*? x*+
x+ x+? x++
最大匹配然后逐步减少直到满足所有匹配 最少匹配然后逐步增加直到满足所有匹配 满足一个匹配就停止

5.零宽断言

断言:在指定位置应该满足一定的条件。
当捕获组以开头时?=,,表示该组将被用作零宽度正预测先行断言,仅当前一个模式与捕获组中的 模式相匹配时才与前一个模式匹配。例如,A(?=B)与A匹
配,并且,⻢上跟着B。可以匹配AB、 ABB、ACB。

6.sed 和 awk

sed:可以将数据进行替换、删除、新增、选取特定内容等功能,用作一整行字符处理。 awk:比sed更精准,通常将一行在切割成相应的字段,再去处理。

7.在LLDB中的应用

# 对指定库中的符合指定的正则表达式的函数下断点
(lldb) breakpoint set —func-regex=.—shlib=libfoo.dylib
# 对符合指定的正则表达式的符号下断点
(lldb) breakpoint set --func-regex regular-expression
# 通过对指定的正则表达式对文件内容设置断点
(lldb) breakpoint set --source-pattern-regexp regular-expression --file SourceFile
上一篇 下一篇

猜你喜欢

热点阅读