我正在尝试在 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("[.]","[.]"));
}
如果遗漏了任何内容,请添加:)