我正在尝试在Java中使用一些正则表达式,我在调试代码时遇到了这个问题。
[.]
和.
之间有什么区别?
我很惊讶.at
匹配“cat”但[.]at
不匹配。
答案 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仅针对这些引擎。