Java正则表达式“[。]”vs“。”

时间:2013-09-05 15:32:19

标签: java regex

我正在尝试在Java中使用一些正则表达式,我在调试代码时遇到了这个问题。

[.].之间有什么区别?

我很惊讶.at匹配“cat”但[.]at不匹配。

2 个答案:

答案 0 :(得分:19)

[.]按字面匹配一个点(.),而.匹配除换行符(\n)以外的任何字符(除非您使用DOTALL模式)。

您还可以使用\."\\.",如果您使用java字符串文字)以字面匹配点。

答案 1 :(得分:3)

[]元字符,可让您定义character class。方括号中的任何内容都按字面解释。您也可以包含多个字符:

[.=*&^$] // Matches any single character from the list '.','=','*','&','^','$'

您需要了解有关[...]语法的两个具体事项:

  • 组开头的^符号具有特殊含义:它反转组匹配的内容。例如,[^.]匹配除点.
  • 之外的任何字符
  • 两个字符之间的短划线-表示两者之间的任何代码点。例如,[A-Z]匹配任何单个大写字母。您可以多次使用破折号 - 例如,[A-Za-z0-9]表示“任何单个大写或小写字母或数字”。

上面的两个结构(^-)几乎适用于所有正则表达式引擎;某些引擎(例如Java)定义additional syntax仅针对这些引擎。