首页 > 其他分享 >正则表达式(上)

正则表达式(上)

时间:2022-11-09 14:47:49浏览次数:54  
标签:字符 正则表达式 System matches println out

正则表达式

字符类

[abc] abc(简单类)

[^abc] 任何字符,除了 abc(否定)

[a-zA-Z] azAZ,两头的字母包括在内(范围)

[a-d[m-p]] admp[a-dm-p](并集)

[a-z&&[def]] def(交集)

[a-z&&[^bc]] az,除了 bc[ad-z](减去)

[a-z&&[^m-p]] az,而非 mp[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 输入的结尾

正则表达式作用:

  • 检验字符串是否满足规则
  • 在一段文本中查找满足要求的内容

小题一道

public static void main(String[] args) {
    /*需求:
请编写正则表达式验证用户输入的手机号码是否满足需求
请编写正则表达式验证用户输入的邮箱号码是否满足需求
请编写正则表达式验证用户输入的座机号码是否满足需求
*/
    //手机号码:15914493268  13535542117
    //邮箱号码:[email protected]    [email protected]   [email protected]   [email protected]
    //座机号码:020-2324242     02122442  027-42424   0712-3242434
    
    //书写细节:
    //拿着一个正确的数据,从左到右依次去写

    //手机号校验拆分成三部分
    //一部分:1开头
    //二部分:第二位3-9之间
    //三部分:[0-9]9位
    String regex1="1[3-9]\\d{9}";
    System.out.println("15914493268".matches(regex1));
    System.out.println("13535542117".matches(regex1));
    System.out.println("---------------------------------");
    //邮箱
    //一部分:@左边
    //二部分:@
    //三部分:@右边  又可分为.左边和.右边
    String regex2="\\w+@[\\w^_]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
    System.out.println("[email protected]".matches(regex2));
    System.out.println("[email protected]".matches(regex2));
    System.out.println("[email protected]".matches(regex2));
    System.out.println("[email protected]".matches(regex2));
    System.out.println("---------------------------------");
    //座机号:
    //一:区号
    //二:-
    //三:号码
    String regex3="0\\d{2,3}-?[1-9]\\d{4,9}";
    System.out.println("020-2324242".matches(regex3));
    System.out.println("02122442".matches(regex3));
    System.out.println("027-42424".matches(regex3));
    System.out.println("0712-3242434".matches(regex3));
}

拓展练习:

IDEA中有一个any-rule的插件可以用于直接生成正则表达式

//24小时的正则表达式
String regex4="(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
System.out.println("23:23:42".matches(regex4));

小结

正则表达式小结:(尽量混眼熟)

符号 含义 举例

[] 里面的内容出现一次 [0-9] [a-zA-Z]

() 分组 a(bc)+

^ 取反 [^abc]

&& 交集,不能写单个的& [a-z&&m-p]

| 写在方括号外面表示并集 [a-zA-Z0-9] x|X\

. 任意字符 \n回车符号不匹配

\ 转义字符 \\d

\\d 0-9 \\d+

\\D 非0-9 \\D+

\\s 空白字符 [\t\n\x0B\f\r]

\\S 非空白字符 [^\s]

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

\\W 非单词字符 [^\w]

? 0次或1次 \\d?

* 0次或者多次 \\d* (abc)*

+ 一次或多次 \\d+

{} 具体次数 a{7}

(?i) 忽略后面字符的大小写 (?i)abc

a((?i)b)c 只忽略b的大小写 a((?i)b)c

标签:字符,正则表达式,System,matches,println,out
From: https://www.cnblogs.com/lovedong/p/16873610.html

相关文章

  • 正则表达式(下)
    正则表达式作用二:在一段文本中查找满足要求的内容本地爬虫和网络爬虫这一段我仅仅使用案列进行演示在此之前我们需要用到两个类:pattern,他是属于java.util.regex.Patte......
  • MySQL 正则表达式
    一.介绍正则表达式用来描述或者匹配符合规则的字符串。它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"......
  • re模块和正则表达式
    一、re模块和正则表达式先来看一个例子:​​https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/​​这是京东的注册页面,打开页面我们就看到这些要求输入个人信......
  • Linux学习笔记(8)——正则表达式与文件格式化处理
    正则表达式与文件格式化处理正则表达式与文件格式化处理一、什么是正则表达式?二、基础正则表达式2.1语系对正则表达式的影响2.2grep的一些高级选项2.3基础正则......
  • 10. 正则表达式匹配
    题目描述给了一个字符串s和字符规律p其中p可能含有"."和"","."可以匹配任何单个字符,""需要和前面字符结合,表示匹配0-任意个前面字符问给定的p能不能匹配sf1-序列dp基......
  • 10.正则表达式匹配
    思路动态规划状态转移:第一个就不解释了当p[j]=='*'时,*可以表示任意个p[j-1]字符,如果表示0个p[j-1],那就是F(i,j)=F(i,j-2),即s[1~i]和p[1~j-2]匹配......
  • python Tips ----- 类型转换String、写入/追加文件、正则表达式字符、yield关键字
      类型转换String写入/追加文件 正则表达式字符  yield关键字  ......
  • 验证用户名的正则表达式
    varreg=/^[0-9a-zA-Z\u4E00-\u9FA5\_]/;//验证中文、数字、字母、下划线正则^([\u4e00-\u9fa5]{1,20}|[a-zA-Z\.\s]{1,20})$1、不能有特殊字符和数字;2、可以输入......
  • 常用正则表达式
    Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?InternetURL:[a-zA-z]+://[^\s]*......
  • python 正则表达式各种符号代表意义
    表达式全集字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行......