《精通正则表达式》笔记
偷懒~~
工具:RegexBuddy
Regex来历:regular expression的简写
[-./]:这个东西以前经常看到,因为从来没学过正则,所以一直误解里头的‘-’。其实这个字符在[]中第一个出现的时候代表的是普通字符,没有别的意思,最后的’/’也是。
|和()的渊源:’|’是个很有意思的东西,它跟分组符号配合就像变魔法一样,可以很容易写出精简的正则。后者据说就是为了限制前者的。
?+*{min,max}:看看就知道啥意思,如果你学过计算机。
^:曾经摸索写的时候我就想,咋没取反的符号类,我恨你~
flavor:流派,跟正则无关,学习下英文。
budding regexers:巧妙的正则。
$1,2,3…:存储的规则是看分组的第一个括号出现的顺序,如果不想存储可以使用(?:)。
(?=)和(?<=):环视(lookahead),就是循环出现,前者是右边出现,后者是左边出现,且环视是不会占据字符的因为它只代表位置。
(?!)和(?<!):跟上面取反的。
插句话,这个书的作者脑子有k,perl来perl去,我可不关心它好不好。
正则起源:居然起源于两个神经学家,大自然真神奇~
字符串中的\\:\w\t等在字符串中要小心,\\代表\
unicode:C#支持,haha
简单字符组减法:[[a-z]-[aeiou]]
组的声明:默认按照左括号(出现的次序,也可以命名<name>例:(?<name>)(?'name’)
\w、\d、\s:处理所有合适的Unicode字符,可以通过启用RegexOptions.ECMAScript来限制在ascii
RegexOptions.ExplicitCapture:取消分组
反向取组:\k<name>或\k’name’
relpacement字符串中:用${name}
(?<DEPTH>)\(?<-DEPTH>):表示深度的,如果前面啥出现就XXXX。前者是+1后者是-1。
(?(DEPTH)):判断是否符合深度