正则表达式入门_单字符匹配

正则表达式的匹配方式

1.模式、元字符等基本概念

  • 字符串 regex
  • 模式 e
  • 结果 r[e]gex

    正则表达式就是模式,很多文档中会使用模式来代表该含义。此处只返回匹配模式的第一条结果。多条匹配时之后介绍。

  • 字符串 regex
  • 模式 E
  • 结果 regex

    正则大小写敏感

  • 字符串 regex
  • 模式 .
  • 结果 [r]egex

    元字符“.”匹配任意字符,但这里所说的任意不是绝对的,在大多数语言正则实现中,“.”只能匹配除换行符以外的任意字符。类似SQL语言中的“_”字符,也类似DOS语言中的“?”字符。

  • 字符串 csdn.com
  • 模式 /.
  • 结果 csdn[.]com

    在正则中,元字符是一种特殊字符,其本身有特殊的含义,例如这里的“.”匹配的是任意字符,如果想要匹配“.”字符本身,需要通过另一个元字符“\”进行转义。将后面跟有的字符转义为字符本身,而不是该字符在正则中特殊的含义。
    元字符“\”后必定跟有一个字符,不会单独出现。如果不跟,正则实现会报错。

2.字符集合

  • 字符串 REGEX
  • 模式 [eE]
  • 结果 R[E]GEX

    字符集合是指定一个元素集合,该集合中任意成员元素匹配字符串。这里集合元素中有e和E两个元素,REGEX字符串匹配了E元素。字符集合类似于SQL中in(xx,xxx,xxxx)。

  • 字符串 [email protected]
  • 模式 [123456789]
  • 结果 [1]23456789

    这里的模式匹配的是1到9任意数字,可以使用元字符“-”来简化模式,[1-9]等同于[123456789]。
    类似的字符集合还有[A-Za-z]等,匹配任意一个英文字符。需要注意的是,元字符“-”实际上比较的是左右两侧字符的ASCLL码,因此右侧的字符ASCLL码要比左侧的大,否则模式无意义,会导致匹配失败。如[3-0]。
    模式[A-z]不常用,因为会匹配到ASCLL码在Z到a之间的控制字符“[”“^”等。

3.特殊字符—元字符

  • 字符串 abcde6ghi
  • 模式 [^A-Za-z]
  • 结果 abcde[6]ghi

    元字符“^”,进行取非操作,在这个模式中,表示匹配非英文字母字符的任意一个字符。需要注意的是, 元字符“^”在字符集合中时,取非的对象并不是其后紧跟的一个字符或字符范围,而是整个字符集合

  • 字符串 abcde6ghi
  • 模式[\W]
  • 结果 abcde[6]ghi

    正则中存在一些常用的字符类,使用元字符“\”将普通字符转化为特殊字符赋予特殊含义。“\W”表示英文字母数字和,“\w”表示英文字母数字和,“\D”表示非数字字符,“\d”表示数字字符,“\s”表示空白字符,“\S”表示非空白字符 等价于[^\t\v\n\r\t]。

  • 字符串 #A00000
  • 模式 [\xA]
  • 结果 #A00000

    正则支持匹配十六进制和八进制,十六进制的数字需要“\x”为前缀,八进制的数字需要“\0”为前缀。[\xA]匹配到的是十进制数字10,对应的ASCLL表中字符为\n,也就是换行符。因此结果并没有匹配到字符。

  • 字符串 abcde6ghi
  • 模式 [[:digit:]]
  • 结果 abcde[6]ghi

    大部分语言的正则实现支持POSIX字符类,但不是所有。字符类[:digit:]表示的是匹配任意一个数字。POSIX字符类必须以“[:xxxxx:]”的形式出现。我们模式外层的“[]”表示的是字符集合。一个字符集合中可以放置多个POSIX字符类。

正则表达式入门_单字符匹配
回车和换行的区别

正则表达式入门_单字符匹配