正则表达式学习笔记
常用的元字符
常用的限定符
常用的反义代码
懒惰限定符
平衡组/递归匹配、堆栈
例一、电话号码匹配
例二、IP 地址匹配 ((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?) ((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?) 249|255| [01]?dd? [01]表示一个数字0或1 [01]?表示[01]可出现一次或者不出现,即或者0,或者1,或者没有。 d表示数字[0-9] d?表示可出现一位数字,或者不要出现。 [01]?dd?表示最多可以出现三位数字,最少出现一位数字;如果是三位数字,则第一位必须是0或者1。 如: 023、123、03、3、34、04等等。 例三、反义 S+匹配不包含空白符的字符串。 <a[^>]+>匹配用尖括号括起来的以a开头的字符串。 例四、懒惰限定符 a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。 a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。 例五、平衡组/递归匹配 xx <aa <bbb> <bbb> aa> yy ( /(==< ) < #最外层的左括号 [^<>]* #最外层的左括号后面的不是括号的内容 ( ( (?'Open'<) #碰到了左括号,在黑板上写一个"Open" [^<>]* #匹配左括号后面的不是括号的内容 )+ ( (?'-Open'>) #碰到了右括号,擦掉一个"Open" [^<>]* #匹配右括号后面不是括号的内容 )+ )* (?(Open)(?!)) #在遇到最外层的右括号前面,判断黑板上还有没有没擦掉的"Open";如果还有,则匹配失败 > #最外层的右括号 学习参考:http://deerchao.net/tutorials/regex/regex.htm (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |