• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-01-13 16:10 Aet 隐藏边栏 |   抢沙发  6 
文章评分 2 次,平均分 5.0

字符组

普通字符组

字符组是正则表达式最基本的结构之一。
字符组就是一组“字符”,在正则表达式当中,它表示在同一个位置可能出现的字符。
写法:在[]中列出可能出现的值。
字符组中的字符排列顺序并不影响字符组的功能
字符组中出现重复的字符也不会影响字符组的功能

上述代码中,使用了C++的regex库里面的方法,接下来的实例,皆类似此处:
解析:
上述str_regex里面双引号的内容,就是一个正则表达式,它给定一个用来匹配的范围,让str_test来匹配,只要str_test与这个范围内的其中一个匹配成功了,就会得到一个MatchObject对象,在上述代码示例中,只要匹配成功,result的值就是true,否则,为false。

解析:
上述代码与上面的代码区别在于,正则表达式里面多了^和$。
^的意思是定位到字符串起始的位置。
$的意思是定位到字符串的结束位置。
作用:拿str_test的完整字符串内容去str_regex里面匹配

范围表示法:

在字符组中可以并列多个范围表示法的内容,如下:

元字符与转义

比如上面的正则表达式里面的-,它用来表示范围,不能用来匹配,它是一个元字符。
使用反斜杠\来对含有特殊含义的元字符来转义。
注意:正则表达式中的每个反斜杠,在代码中必须转义为\\
有的语言,有保持字符串原生内容的语法,比如C++:

另外,需要注意的是,[]中括号,如果需要作为匹配内容的话,只需要转义[,不需要转义]。

排除型字符组

类似普通字符组
在[后面跟着一个^

字符简记法

简记 正则表达式
\d [0-9]
\w [0-9a-zA-Z]
\s [\t\v\n\r\f]
\D 匹配\d不能匹配的字符
\W 匹配\w不能匹配的字符
\S 匹配\s不能匹配的字符

POSIX字符组

需要在Linux下的各种工具中使用正则表达式,则需要用到POSIX字符组

字符组 说明 ASCII字符组 等价PCRE简记
[:alnum:] 字母和数字 [a-zA-Z0-9]
[:alpha:] 字母 [a-zA-Z]
[:ASCII:] ASCII字符 [\x00-\x7F]
[:blank:] 空格字符和制表符 [ \t]
[:cntrl:] 控制字符 [\x00-\x1F\x7F]
[:digit:] 数字字符 [0-9] \d
[:graph:] 空白字符之外的字符 [\x21-\x7E]
[:lower:] 小写字母 [a-z]
[:print:] 类似graph,但包括空白字符 [\20-\x7E]
[:punct:] 标点符号 [][!"#$%&'()*+,./:;<=>?@\^_`{|}~-]
[:space:] 空白字符 [ \t\r\v\n\f] \s
[:upper:] 大写字母 [A-Z]
[:word:] 字母字符 [0-9a-zA-Z] \w
[:xdigit:] 十六进制字符 [0-9a-fA-F]

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-21
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享