正则表达式——1

这是在读《精通正则表达式》过程中的一些记录

\a alert <BEL> 警报
\b backspace <BS> 退格
\e escape <ESC> Escape字符
\f formFeed <FF> 进纸符
\n nextline <LF> 换行符
\r return <CR> 回车
\t tab <HT> 水平制表符
\v vertical <VT> 垂直制表符
注:换行符\n出现在几乎所有平台上,通常对应ASCII的<LF>字符,八进制编码12。Mac中对应<CR>,十进制编码015。在Java或任意一种.NET语言中,不论采用什么平台,都对应<LF>字符。
回车符对应<CR>字符,在Mac中对应<LF>字符,在Java或任意一种.NET语言中,都对应<CR>字符。
如果需要程序在可能运行的平台上都能通用的换行符就用\n。
[:alnum:] 字母字符和数字字符
[:alpha:] 字母
[:blank:] 空格和制表符
[:cntrl:] 控制字符
[:digit:] 数字
[:graph:] 非空字符(即空白字符和控制字符以外的字符)
[:lower:] 小写字母
[:print:] 类似[:graph:],但是包含空白字符
[:punct:] 标点符号
[:space:] 所有的空白字符
[:upper:] 大写字母
[:xdigit:] 十六进制中容许出现的数字0-9a-fA-F

有的locale定义了字符等价类,表示某些字符在进行排序之类的操作时应视为等价。等价类的表示法类似[:……:],但是用等号取代冒号,=n=][=a=

GNU Emacs语法类
GNU Emacs不支持传统的\w,\s之类,相反,它使用特殊的序列来引用语法类,
\schar 匹配Emacs语法类中char描述的字符
\Schar 匹配不在Emacs语法类中的字符
\sw 匹配构成单词的字符
\s- 匹配空白字符
Emacs的特殊之处在于,这些字符组包含的字符是可以临时更换的,所以构成单词的字符组中的字符可以根据所编辑文本的变化而变化

匹配的起始位置:\G
Perl的\G有三个很有用的方面
1.\G指向位置是每个目标字符串的属性,而不是设定这些位置的正则表达式的属性。也就是说,多个正则表达式可以依次对同一个字符串进行匹配,都使用上一轮匹配设定的\G
2.Perl的正则运算符有一个选项/c,它规定了如果匹配失败,不要重新设定\G,而是保持之前的值不变。结合第一点就可以从某个位置开始尝试使用多个正则表达式进行匹配,直到匹配成功,然后在下面的文本中继续寻找匹配。
3.\G对应的属性可以用于正则表达式无关的结构(Perl中的pos函数)来检查和修改。可能有人希望设定这个位置来规定从什么位置开始寻找匹配,以及只从那个位置开始的匹配,同样如果语言支持本条功能,而没有直接提供它,那么我们可以用本条功能来模拟它。

PHP和Ruby中的\G指向当前匹配的开头位置,而Perl、Java.util.regex和.NET匹配上一次匹配的结束位置。

忽略优先量词 即尽量匹配少的内容 *? +? ?? {min,max}? 占有优先量词 即所谓的贪婪,往后匹配尽可能多的内容,目前只有在java.util.regex和PCRE中可以实现 *+ ++ ?+ {min,max}+

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...