ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-08-12 第八组 卢睿 学习心得

2022-08-13 17:00:26  阅读:117  来源: 互联网

标签:regex 12 匹配 String 08 System 2022 println out


正则表达式

今日重点

  1. 正则表达式
  2. 元字符
  3. 重复限定符
  4. 分组
  5. 转义
  6. 常见的正则表达式

前言

从一个文章中找到所有的邮箱
看看输入的手机号是否合法
身份证号

又叫做规则表达式,Regular Expression Regex
判断字符串,核心功能处理文本

正则表达式不局限于某一种语言。

Hello World

元字符

.:匹配除了换行符之外的任意字符
\w:匹配字符或数字或下划线或汉字
\s:空格
\d:匹配数字
\b:匹配单词的开始或结束
^:匹配字符串的开始
$:匹配字符串的结束

匹配8位数字的QQ号:^\d\d\d\d\d\d\d\d$
匹配1开头11位数:^1\d\d\d\d\d\d\d\d\d\d$

重复限定符

*:重复零次或更多次
+:重复一次或更多次
?:重复零次或一次
{n}:重复n次
{n,}:重复n次或更多次
{n,m}:重复n到m次

匹配8位数字的QQ号:^\d{8}$
匹配1开头11位数手机号:^1\d{10}$

银行卡号14~18位:^\d{14,18}$

匹配以a开头,0个或多个b结尾的字符串^ab*$

分组

限定符的作用与它相邻的最左边的一个字符起作用,那么问题来了,
如果我想要ab同时被限定怎么办?
正则表达式中可以用小括号来分组,括号内的内容会作为一个整体。
^(ab)*$

转义

匹配字符串中包含0到多个(ab)开头:^((\ab))*

条件

手机号:
联通:130 131 132 134 155 156 185 186
匹配一个联通的手机号。或
| 单或
联通手机号:^(130|131|132|134|155|156|185|186)\d{8}$

区间:

正则表达式提供了一个[]来表示区间
0~9:[0-9]
A~Z:[A-Z]
限定某些数字:[130]
^((13[0-2])|(15[5-6])|(18(5-6)))\d{8}$

反义:

\W:不是字母、数字,下划线、中文
\S:不是空格
\D:不是数字
\B:不是单词开头或结束
[^x]:除了x以外的任意字符
[^aeiou]:匹配除了aeiou的任意字符

常见的正则表达式:

匹配中文的字符:[],匹配的时ASCII码
175367745@qq.com
abcdfeg-xxx@163.com.cn
邮箱:^ [a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
国内的电话号码: 0431-81234567 010-81234567 021-12345678
^\d{3,4}-\d{8}$
QQ号: ^ [1-9][0-9]{4,11}$

220122199009091234
身份证号:
^ [1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\ {3}[0-9Xx]$

public class Ch01 {

    public static void main(String[] args) {
//        String reg = "^\\d{8}";
//        System.out.println((int)'吉');
        System.out.println("\\");
        System.out.println("\\\\");
    }
}
import org.junit.Test;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

/**
 * Pattern类
 * Matcher类
 * PatternSyntaxException类
 */
public class Ch02 {

    @Test
    public void test06() {
        String regex = "[-_]";
        String str = "123-4756_qweqwe-7987_465";
        String[] split = str.split(regex);
        System.out.println(Arrays.toString(split));
    }

    @Test
    public void test05(){
        String regex = "\\d";
        String str = "1111c2222d456456456f465gh987897";

        String s = str.replaceAll(regex, "@");
        System.out.println(s);
    }

    @Test
    public void test04() {
        String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
        String email = "175367745@qq.com";
        System.out.println(email.matches(regex));
    }

    @Test
    public void test03() {
        String regex = "a";
        String str = "cat cat dog dog cat";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);

        // 统计cat在字符串中出现的次数
        int count = 0;
        System.out.println(matcher.find(str.length() - 1));
        while(matcher.find()){
            count++;
        }
        System.out.println("出现了" + count + "次");
    }

    @Test
    public void test02() {
        String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
        String email = "175367745@qq.";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);
        System.out.println(matcher.matches());
    }

    @Test
    public void test01() {
        String str = "hello,i am from jilin changchun!";
        // 必须包含jilin
        String pattern = ".*jilina.*";
        boolean b = Pattern.matches(pattern,str);
        System.out.println("字符串中是否包含了jilin:" + b);
    }
}

标签:regex,12,匹配,String,08,System,2022,println,out
来源: https://www.cnblogs.com/lurui711/p/16583481.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有