正则表达式 学习笔记
工作机制
“惰性”量词(lazy quantifiers)和反向引用(backreferences),只能在正则导向的引擎中实现。如果反向引用或“惰性”量词被实现,则可以肯定你使用的引擎是正则导向的。你可以作如下测试:将正则表达式 匹配原理
占有字符是互斥的,零宽度是非互斥的。也就是一个字符,同一时间只能由一个子表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配。 元字符> 所有的元字符: [ ] ^ $ . | ? * + ( ) 1. 字符组字符集是由一对方括号“[ ]”括起来的字符集合
2. 小数点. 匹配除了换行符 n 以外的任意一个字符 3. 量词{m} 匹配m次 {m,n} 匹配最少m次,最多n次 {m,} 匹配至少m次 ? 匹配前导字符0次或一次。相当于{0,1} + 匹配前导字符1次或多次。相当于{1,} * 匹配前导字符0次或多次。相当于{0,1} 匹配优先(贪婪模式):标准量词修饰的子表达式,在可匹配可不匹配的情况下,总会先尝试 进行匹配。“{m}”、“{m,n}”、“{m,}”、“?”、“*”和“+”都是匹配优先的。 忽略优先(非贪婪模式):标准量词后加一个“?”,此时,在可匹配可不匹配的情况下,总会先忽略匹配。“{m}?”、“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。
4. 分支| 表示选择。你可以用选择符匹配多个可能的正则表达式中的一个。 捕获组和环视捕获组匹配的内容,可以在正则表达式的外部程序中进行引用,也可以在表达式中进行引用,表达式中引用的方式就是反向引用。 (Expression) 普通捕获组 (?<name> Expression) 命名捕获组 (?:Expression) 非捕获组 环视只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度的。 环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。环视相当于对所在位置加了一个附加条件。 (?<=Expression) 逆序肯定环视,表示所在位置左侧能够匹配Expression (?<!Expression) 逆序否定环视,表示所在位置左侧不能匹配Expression (?=Expression) 顺序肯定环视,表示所在位置右侧能够匹配Expression (?!Expression) 顺序否定环视,表示所在位置右侧不能匹配Expression (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |