黑马程序员——正则表达式总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

什么是正则表达式

正则表达式就是用相应的特殊的字符代替数字,符号所构造的字符串,正则表达式像接口,对字符串内容的高度抽象化

为什么要用正则表达式

因为String类里对字符的操作太简单了,不够灵活,所以就有了正则表达式的诞生,高效率的完成对字符的操作、

正则表达式的构造摘要

字符类
[abc] ab 或 c(简单类)
[^abc] 任何字符,除了 ab 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p[a-dm-p](并集)
[a-z&&[def]] de 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

正则表达式的应用(匹配,替换,切割,获取)

 1 练习(匹配)
 2 /*
 3  * 通过正则表达式,实现手机号只能是13xxx 15xxx 18xxx.
 4  */
 5 package bolgtest;
 6 import java.io.*;
 7 public class RegexTest1 {
 8
 9  public static void main(String[] args)throws Exception {
10   BufferedReader buffer  = new BufferedReader(new InputStreamReader(System.in));
11   String a  = buffer.readLine();
12   String regex = "[1][358]\\d{9}";
13   System.out.println(a.matches(regex));
14   buffer.close();
15
16
17  }
18
19 }
 1 练习(替换)
 2 /*
 3  * 把字符串“ddaghdfjjiifhdhddoooo”中的叠词替换成单个符号
 4  */
 5 package bolgtest;
 6
 7 public class RegexTest2 {
 8
 9  public static void main(String[] args) {
10   String str = new String("ddaghdfjjiifhdhddoooo");
11   String regex = "(.)\\1*";
12   String strcopy = str.replaceAll(regex, "$1");
13   System.out.println(strcopy);
14
15  }
16
17 }
 1 练习(切割)
 2 /*
 3  * 已知字符串"ddaghdfjjiifhdhddoooo",按叠词切割该字符串
 4  */
 5
 6 package bolgtest;
 7
 8 public class RegexTest3 {
 9
10  public static void main(String[] args) {
11   String str = new String("ddaghdfjjiifhdhddoooo");
12   String regex = "(.)\\1+";
13   String[] strArray = new String[10];
14   strArray = str.split(regex);
15   for(String s : strArray){
16    System.out.println(s);
17   }
18
19
20  }
21
22 }
 1 练习
 2 /*
 3  * 字符串"ming tian jiu yao fang jia le "通过正则表达式获取三个字母构成的单词
 4  */
 5
 6 package bolgtest;
 7
 8 import java.util.regex.Matcher;
 9 import java.util.regex.Pattern;
10
11 public class RegexTest4 {
12
13  public static void main(String[] args) {
14   String str = "ming tian jiu yao fang jia le";
15   String regex = "\\b[a-z]{3}\\b";
16   Pattern pattern  = Pattern.compile(regex);
17   Matcher mather = pattern.matcher(str);
18   while(mather.find()){
19    System.out.println(mather.group());
20   }
21
22  }
23
24 }
时间: 2024-12-13 05:21:58

黑马程序员——正则表达式总结的相关文章

黑马程序员-正则表达式基础

正则表达式是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的.正则表达式可以用于搜索.编辑或者是操作文本和数据.它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式.正则表达式的变化是复杂的,一旦你理解了它们是如何被构造的话,你就能解析或者构建任意的正则表达式了..正则表达式由一些普通字符和一些元字符组成. 普通字符包括大小写的字母和数字,而元字符则具有特殊的含义.在最简单的情况下,一个正则表达式看上去就是一个普通的查找串.例如,正则表达式"a

黑马程序员——正则表达式篇

------- android培训.java培训.期待与您交流! ---------- 正则表达式:符合一定规则的表达式. 作用:用于专门操作字符串. 特点:用一些特定的符合来表示一些代码操作,这样就简化书写. 所以学习正则表达式,就是在学习一些特殊符号的使用. 好处:可以简化对字符串的复杂操作. 弊端:符合定义越多,正则表达式越长,阅读性越差. 具体操作功能: 1,匹配:String matches(regex);用规则匹配整改字符串,只要有一处不符合规则,就匹配结束,返回false 2,切割

黑马程序员-正则表达式的作用

黑马程序员-正则表达式的作用

黑马程序员——正则表达式 Regex

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作"匹配"): 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分. 正则表达式的特点是: 1. 灵活性.逻辑性和功能性非常的强: 2. 可以迅速地用极简单的方式

黑马程序员——正则表达式

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式用于操作字符串数据.通过一些特定的符号来体现的.所以我们为了掌握正则表达式,必须要学习一些符号. 正则表达式可以简化对字符串的复杂操作.虽然简化了操作,但是阅读性差. 1.常见符号 说明:X表示字符X或者匹配的规则. 1.字符 x                  字符 x \\                 反斜线字符 \t                 制表符 (

黑马程序员- 正则表达式

为什么?:为什么要有正则表达式. 我们先看看一个练习: 对QQ号进行校验: 要求:5~15位, 0不能开头,只能是数字 代码如下 总觉得那样校验很麻烦,写了一大堆的代码:我们在来看看正则表达式的效果 代码如下   java.util.regex 包: 经过上面的练习我们可以看出正则表达式是代码简单了许多.不是那么的沉重. 什么是正则表达式呢? 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达

黑马程序员 - 正则表达式和常用其他类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式: 专门用于操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写 好处:可以简化书写 弊端:阅读性差 具体功能:1.匹配:matches方法 定义字符个数和规则 reg = [字符范围][字符范围](前一个[]的个数范围) 例 String reg = [ab][a-z][0-9]{1-3} \d 数字 表示3~5长度的字符串第一个字符(a或b)第二个(a~z)第

黑马程序员 ---------- Java网络技术之 ---正则表达式 (Day06)

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 正则表达式 正则表达式:基本知识 1  字符,   2 字符类 , 3 预定义字符类 , 4 边界匹配器 ,5 Greedy 数量词,6 Logical 运算符 详解: 1 字符 x   字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn (0 <= n

黑马程序员——Java正则表达式

正则表达式 两类:Pattern模式类和Matcher匹配类 Pattern主要是用来编译模型和生成匹配器matcher: 正则表达式基本方法 //定义一个pattern,该pattern就是个f空两个k的模式 Pattern p =Pattern .compile("f(.+?)(.+?)(.+?)k" ); //按照p的模式匹配字符串 Matcher m = p .matcher ("qqfucogffAkfkkkkkf15fkjjfqfi") ; while(