我正在尝试在 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("[.]","[.]"));
}
如果有什么遗漏请补充:)