正则表达式
用来处理文本内容 单次匹配 多次匹配 替换 分割
正则表达式中不带次数匹配的话默认只能匹配一个字符
[]匹配中括号中的任何一个字符
[abc\s] 匹配中括号中的任意单个字符a b c 单个空白字符 表示or关系匹配单个字符
abc\s 匹配4个字符必须连在一起 and关系
\d\s\d [\d\s\d] 两者的匹配结果是不同的
\w 表示标识符号 可以是字母,数字,中文,下划线
\w [0-9a-z-A-Z_] = [\da-zA-Z_]
.匹配除换行符之外的任意单个字符
\s 匹配任何单个空白字符
\w\w{0,2} {0,2}只修饰它前面的第一个元字符\w,和最前面的\w没有任何关系
f|wood 或关系 匹配f字符或者wood字符串
food|wood 竖线前面算一个整体,竖线后面算一个单独的整体
(f|w)ood 用括号改变优先级
()括号除了改变匹配优先级,还提供了分组匹配结果
(?:f|w)ood (?:)
只改变匹配优先级,取消分组匹配结果
匹配模式
默认是贪婪模式 尽可能多匹配到最后一次
贪婪模式和非贪婪模式
v.*y 贪婪模式
一定要匹配到字符串中即使中间有y也不会停止最后一次出现的y字符
v.*?y 非贪婪模式
最短匹配模式,字符中间出现一次y便算匹配成功一次,然后继续往后查找匹配
直到匹配完所有的字符内容
正则引擎选项模式
默认模式,单行模式和多行模式
单行和多行是两个不同的正则引擎选项,默认都不会自动开启这两个模式
单行模式
把多行的文本当成一行文本,换行符不再是特殊的符号
用来解决.(点号)能不能穿透换行符
多行模式
按照换行符号正则表达式依次从每行的行首到行尾进行一次匹配
每行匹配一次
只有出现^行首 $行尾的时候才需要关注多行模式
否则都需要当作单行字符串来处理
默认模式
默认匹配模式
点号不代表\n换行符
默认把所有的行文本看作成一行文本
正则语法分析
每次对正则表达式进行使用前都必须对这个表达式进行一次语法分析和语法编译,如果对同一个表达式进行多次匹配使用的话会对这个表达式进行多次编译,浪费系统资源
可以对每个正则表达式进行预编译,这样在使用的时候可以提高正则表达式的使用效率
通配符
用来处理文件系统中目录搜索
通配符不是正则表达式
通配符用在目录系统中
正则表达式用在文本处理中