正则表达式——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}+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值