版权声明:个人水平有限,表述不当或疏漏之处欢迎读者提问交流,共同进步! 作者:J__Max 非商业转载请注明出处,商业转载请联系作者获得授权。 https://blog.csdn.net/J__Max/article/details/85227516
正则表达式学习总结 — Java(二)
-
在上一篇博客中,初步了解了正则表达式以及String类内建的几个正则工具,但它们都只是入门,接下来会进入 java.util.regex 包的使用,正则表达式的创建,以及多种应用方法。如有缺漏,欢迎补充;如有错误,希望纠正!
创建正则表达式
-
在开始学习正则表达式之前,我觉得有必要复习一下一些具有特殊含义的字符,如果你学习了其他的编程语言,C、C++、Python 等等,你肯定对它们不陌生:
字符 含义 B 制定字符B \xhh 十六进制值为oxhh的字符 \uhhhh 十六进制表示为oxhhhh的Unicode字符 \t 制表符Tab \n 换行符 \r 回车 \f 换页 \e 转义(Escape) -
接下来正式进入正则表达式部分,首先得认识一下字符类。当你学会了使用字符类之后,正则表达式的威力才能真正显现出来。以下是一些创建字符类的典型方式,以及一些预定义的类:
字符类 含义 . 任意字符 [abc] 包含a、b和c的任何字符(和 a [^abc] 除了a、b和c之外的任何字符(否定) [a-zA-Z] 从a到z或从A到Z的任何字符(范围) [abc[hij]] 任意a、b、c、h、i和j字符(和 a a-z&&[hij] 任意h、i或j(交) \s 空白符(空格、tab、换行、换页和回车) \S 非空白符([^\s]) \d 数字[0-9] \D 非数字[^0-9] \w 词字符[a-zA-Z0-9] \W 非词字符[^\w] -
这里只列出了部分常用的表达式,想要了解更多的话可以查看官方JDK文档中 java.util.regex.Pattern 部分的内容。除了字符类的应用,还会使用到逻辑操作符号和边界匹配符:
逻辑操作符 含义 XY Y跟在X后面 X Y (X) 捕获组。可以在表达式中用\i引用第i个捕获组 边界匹配符 含义 ^ 一行的起始 $ 一行的结束 \b 词的边界 \B 非词的边界 \G 前一个匹配的结束 -
下面给出一个示例,该示例中的每一个正则表达式都能够匹配字符序列“Rudolph”:
public static void main(String[] args) {
for(String pattern : new String[] {
"Rudolph",
"[rR]udolph",
"[rR][aeiou][a-z]ol.*",
"R.*"
}) {
System.out.println("Rudolph".matches(pattern));
}
}
/*
输出:
true
true
true
true
*/