JavaEE-14-正则表达式

概述:

   正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。

  在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。

  正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

  很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。

  如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。

  和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂

学习入门:

  学习正则表达式最好的方法就是通过示例学习,下面举一个简单的例子:

  

  • ^ 为匹配输入字符串的开始位置。

  • [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。

  • abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。

  再看一下例子:只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度

  

 A:字符

    x 字符x。(举例:'a'表示字符a)

    \\ 反斜杠字符。

    \n 换行符

    \r 回车符

B:字符类

    [abc] a、b、c字符

    [^abc] 除了a、b、c外的任何字符

    [a-zA-Z] 任意大小写字母

    [0-9] 任意数字

C:预定义字符类

    任何字符  

    \d 数字字符  [0-9]

    \w 单词字符  [a-zA-Z_0-9]

D:边界匹配器

    ^ 行的开头

    $ 行的结尾

    \b 单词边界

E:数量词

    X? 一次或一次也没有

    X* 零次或多次

    X+ 一次或多次

    X{n} n次

    X{n,} 至少n次

    X{n,m} 至少n次,但不超过m次

 

正则表达式的应用:

  1.判断功能:

    public boolean matches(String regex)

    先建立一个规则regex,再使用matches方法调用该方法,判断其是否满足该规则。

    常见使用场景:手机号码、邮箱地址、密码等的格式验证。

  2.分割功能:

    public String[] split(String regex)

    先确定分割符号并建立相应的规则regex,再调用split方法,对字符串进行分割。

    常见使用场景:以- , . \等符号或者空格间隔的字符串,将其分割后以字符数组的形式表示。

    举例:

 1 public class RegexTest {
 2     public static void main(String[] args) {
 3         String s = "91 27 46 38 50";
 4         String[] strArray = s.split(" ");//将字符串分割为字符数组
 5         int[] arr = new int[strArray.length];//定义整型数组
 6         for (int x = 0; x < arr.length; x++) {//将字符数组元素转成int
 7             arr[x] = Integer.parseInt(strArray[x]);
 8         }
 9         Arrays.sort(arr);//对数组进行排序
10         //使用字符串缓冲将数组重新转换成字符串
11         StringBuilder sb = new StringBuilder();
12         for (int x = 0; x < arr.length; x++) {
13             sb.append(arr[x]).append(" ");
14         }
15         String result = sb.toString().trim();
16         System.out.println(result);
17     }
18 }

  3.替换功能:

    public String replaceAll(String regex,String replacement)

    将需要被替换的内容建立一下规则regex,再将新的内容建立成一个字符串,再调用replaceAll方法,替换旧的内容。

    常见使用场景:论坛上常用的文字屏蔽功能,替换成文明用语。

    举例:

 1 public class RegexDemo {
 2     public static void main(String[] args) {
 3         String s = "helloqq12345worldkh622424321314java";
 4         String regex = ".+";
 5         String ss = "文明用语";
 6 
 7         String result = s.replaceAll(regex, ss);
 8         System.out.println(result);
 9     }
10 }

  4.获取功能:

    Pattern和Matcher类的使用

    先把规则regex编译成模式对象,再通过模式对象得到匹配器对象,最后通过匹配对象的find方法查找。

posted @ 2020-10-28 16:58  benon  阅读(131)  评论(0编辑  收藏  举报