Java中正则表达式

简介: 快来看看Java中正则表达式究竟是啥吧。

正则表达式

正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。

正则表达式语法image.png

点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符。

//一个字符串其实就是一个简单的正则表达式例如HelloWorld正则表达式匹配"Hello World"字符串。//.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。[abc] -----------abc中任意一个字符[^abc] ----------除了abc中任意字符[a-z]------------a,b,c......z中任意字母[a-zA-Z0-9]------a-z,A-Z,0-9中任意字符[a-z&&[^bc]]-----a-z中除了bc外其他任意字符x|y--------------匹配xy。//例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

单词字符即数字,字母,下划线。

.-----任意字符\d--------任意一个数字字符\w--------单词字符\s--------匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。\D--------非数字字符\W---------非单词字符\S--------非空白字符X?-----------表示0个或者1个// [A-Z]? 随便写一个或者不写   B或者不写X*-----------表示0个或者任意多个XX+-----------表示1个或者任意多个X(>=1X{n}----------表示n个XX{n,}-----------表示n个到任意多个X(>=X)X{n,m}--------表示n个到m个X

image.png

捕获组和分组

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

捕获组是通过从左至右计算其开括号来编号。若在表达式((A)(B(C))),有四个这样的组:((A)(B(C)))
(A)
(B(C))
(C)

分组

分组:()圆括号表示分组,可以将一系列正则表达式看成一个整体,分组时可以使用“|”表示使用“或”关系。

[ABC]{3}//BBC   AAB  AAA可以,BCD 不行(ABC){3}//ABCABCABC(ABC|DEF){3}//ABCDEFABC

matches 和 lookingAt 方法

matches 和 lookingAt 方法都用来尝试匹配一个输入序列模式。它们的不同是 matches 要求整个序列都匹配,而lookingAt 不要求。

lookingAt 方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。

/*** 字符串支持正则表达式方法* boolean matches(String regex)* 根据给定的正则表达式验证当前字符串是否满足格式要求,满足true 否则false*/publicclassString {
publicstaticvoidmain(Stringargs[]){
/*** 电子邮箱* [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+*/Stringregex="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)+";//点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符System.out.println(regex);
    }
}//[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+

split方法

/*** 字符串支持正则表达式方法二* String[] split(String regex)* 将当前字符串按照满足正则表达式的部分进行拆分,返回拆分的每段内容*/Stringstr="abcdef4ghijk123456zvdsf";
Stringregex="[0-9]+";
String[] array=str.split(regex);
System.out.println("len:"+array.length);
for (inti=0;i<array.length;i++){
System.out.println(array[i]);
}
//len:3//abcdef//ghijk//zvdsf

replaceFirst 和 replaceAll 方法

replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。

Stringstr="d23b33k";
str=str.replaceAll("\\d","#");
System.out.println(str);//d##b##k

appendReplacement 和 appendTail 方法

appendReplacement 和 appendTail 方法用于文本替换

privatestaticStringREGEX="a*b";
privatestaticStringINPUT="aabfooaabfooabfoobkkk";
privatestaticStringREPLACE="-";
publicstaticvoidmain(String[] args) {
Patternp=Pattern.compile(REGEX);
// 获取 matcher 对象Matcherm=p.matcher(INPUT);
StringBuffersb=newStringBuffer();
while(m.find()){
m.appendReplacement(sb,REPLACE);
 }
m.appendTail(sb);
System.out.println(sb.toString());
//-foo-foo-foo-kkk

这是java中有关正则表达式的知识点,如果有啥问题,欢迎大家指出哈,谢谢大家。













目录
相关文章
|
2天前
|
Java 测试技术
Java一分钟之-正则表达式在Java中的应用
【5月更文挑战第14天】正则表达式是Java中用于文本处理的强大力量,通过`java.util.regex`包支持。常见问题包括元字符的理解、边界匹配和贪婪/懒惰量词的使用。错误通常涉及未转义特殊字符、不完整模式或过度匹配。要避免这些问题,需学习实践、使用在线工具和测试调试。示例代码展示了如何验证邮箱地址。掌握正则表达式需要不断练习和调试。
17 2
|
2天前
|
Java 开发者
Java一分钟之-Lambda表达式与函数式接口
【5月更文挑战第12天】Java 8引入的Lambda表达式简化了函数式编程,与函数式接口结合,实现了代码高效编写。本文介绍了Lambda的基本语法,如参数列表、箭头符号和函数体,并展示了如何使用Lambda实现`Runnable`接口。函数式接口仅有一个抽象方法,可与Lambda搭配使用。`@FunctionalInterface`注解用于确保接口具有单一抽象方法。文章还讨论了常见的问题和易错点,如非函数式接口、类型冲突以及Lambda表达式的局部变量可见性,并提供了避免这些问题的策略。通过理解Lambda和函数式接口,开发者能提高代码可读性和效率。
40 4
|
2天前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
8 0
|
1天前
|
Java API
Java 8新特性之Lambda表达式与Stream API实践指南
【5月更文挑战第15天】 随着Java语言的不断发展,Java 8作为一个重要的版本,引入了许多令人兴奋的新特性。其中,Lambda表达式和Stream API是Java 8最受关注的两个特性。本文将深入探讨Lambda表达式的基本概念、语法和使用场景,以及如何结合Stream API实现更加简洁、高效的代码编写。通过实例演示,帮助读者快速掌握这两个新特性,提高Java编程能力。
|
2天前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
15 3
|
2天前
|
Java API 开发者
Java中Lambda表达式的深入理解与应用
【5月更文挑战第12天】在Java 8之后,Lambda表达式已经成为了Java开发者必备的技能之一。Lambda表达式以其简洁、灵活的特点,大大提高了编程的效率。本文将深入探讨Lambda表达式的基本概念,语法规则,以及在实际开发中的应用,帮助读者更好地理解和使用Lambda表达式。
|
2天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
41 2
|
2天前
|
算法 安全 Java
Java表达式和规则引擎的比较与考量
Java表达式和规则引擎的比较与考量
10 0
|
2天前
|
Java
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
|
2天前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
14 0