ICode9

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

2022-8-12第一组孙乃宇正则表达式

2022-08-12 21:03:35  阅读:140  来源: 互联网

标签:regex 12 匹配 String 正则表达式 Z0 zA 2022 孙乃宇


正则表达式

正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的字符串。在表单验证、Url映射等处都会经常用到。

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

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

元字符:

.匹配除了换行符之外的任意字符
\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$

但是这么些有些麻烦,所以就有了重复限定符

重复限定符

*代表重复0次或者更多次
+ 重复1次或更多次
? 重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

这样的正则表达式就变短了

匹配8位数字的QQ号: ^\d{8}$

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

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

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

分组

限定符的作用与它相邻的最左边的一个字符起作用,

如果想要ab同时被限定怎么办?

正则表达式中可以用小括号分组,括号里的内容会作为一个整体。

如:^(ab)*$

转义

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

| 或

如:联通手机号:^(130|131|132|134|186)\d{8}$

区间

正则表达式提供了一个[]表示区间

0~9:[0-9]:表示0到9

A~Z:[A-z]:表示A到Z

反义

\W:不是字母、数字,下划线、中文

\S:不是空格

\D:不是数字

\B:不是单词开头或结束

[^x]:除了x以外的任意字符

[^aeiou]:匹配除了aeiou的任意字符

常见的正则表达式:

正则表达式匹配中文式匹配的ASCⅡ码

邮箱:^[a-zA-Z0-9-]+@[a-zA-Z0-9-]+(.[a-zA-Z0-9_-]+)+$

国内的电话号码如:0431-81234567 ^\d[3,4]-\d[8]$

QQ号: ^[1-9][0-9]{4,11}$

java中操作正则表达式

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 test01() {
       String str = "hello,i am from jilin changchun!";
       // 必须包含jilin
       String pattern = ".*jilina.*";
       boolean b = Pattern.matches(pattern,str);
       System.out.println("字符串中是否包含了jilin:" + b);
  }
   
    @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 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 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 test05(){
       String regex = "\\d";
       String str = "1111c2222d456456456f465gh987897";

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

标签:regex,12,匹配,String,正则表达式,Z0,zA,2022,孙乃宇
来源: https://www.cnblogs.com/sunnaiyu/p/16581303.html

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

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

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

ICode9版权所有