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
网友评论