Java 正则表达式 "[.]" vs "."



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

[.].有什么区别?

我很惊讶.at会匹配"猫",但[.]at不会。

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

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

[] 是允许您定义字符类元字符。括在方括号中的任何内容均按字面解释。您还可以包含多个字符:

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

关于[...]语法,您需要了解两件具体的事情:

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

上面的两个结构(^-)对于几乎所有正则表达式引擎都是通用的;一些引擎(如Java的)定义了特定于这些引擎的附加语法。

则表达式结构

。=> 任何字符(可能匹配也可能不匹配行终止符)

<小时 />

并匹配点. 使用以下方法

[.] => it will matches a dot
\. => it will matches a dot

注意:Java 正则表达式中的字符类是使用方括号"[ ]"定义的,此子表达式匹配指定或可能字符集中的单个字符。

示例:在字符串地址中将每个"."替换为"[.]"

public static void main(String[] args) {
    String address = "1.1.1.1";
    System.out.println(address.replaceAll("[.]","[.]"));
}

如果遗漏了任何内容,请添加:)

最新更新