注意:正则表达式只关注格式是否正确,不关注内容是否有效。

一、字符集合, []表示一个字符。

  1、[abc] :指a,b,c中的任意一个字符。

  2、[^abc]:指除了a,b,c外的任意字符。

  3、[a-z]:表示a到z间的任意一个字符。

  4、[a-zA-Z0-9]:表示a到z,A到Z,0到9的任意一个字符。

  5、[a-z&&[^bc]]:等价于[ad-z],指a到z间除了b,c字符的任意字符。

二、预定义字符集* ( . )表示任意一个字符。

  1、\d : 数字字符集,相当于[0-9],

  2、\w:单词字符集,相当于[a-zA-Z0-9_]。
  3、\s:空白字符集,相当于[\t\n\f\r\xoB]。
  4、\D:非\d
  5、\W:非\w
  6、\S:非\s

三、数量词

  1、?表示0个或一个。
  2、* 表示0个或无穷个。
  3、+ 表示1个或无穷个。
  4、{n}表示n个。
  5、{n, }表示n个到无穷个。
  6、{n, m }表示n个到m个(m>n)。
  7、() 表示一个整体。比如:(\+86)就是表示+86,此时+需要转义。
  8、^在[]中表示非,而放在[]外,表示以……开头。比如^[0-9]就是以数字0-9开头。
  9、$表示以……结尾,比如[0-9]$就是指以数字0-9结尾。

四、java的String中正则表达式写法(转义的问题)

  1、11位手机号正则表达式: "^[0-9]{11}$" ;

  2、邮箱正则表达式:"^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9])+$" ;此时若使用String regex = " [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9])+ "; 由于java字符串认为 ( . ) 不需要进行转义,所以写成 ( \. )会报错,需要对 \ 进行转义, 即写成 ( \\. )

  3、简单的日期表达式:"^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$"  ;  \1表示匹配第一个小括号的内容,即(\-|\/|\.)

 public class Test {
public static void main(String[] args) {
String regexDemo1 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$";
String str = "2019.05.22";
System.out.println(str.matches(regexDemo1)); // 返回true // regexDemo1等价于regexDemo2。 其 \1 指的即为第一个小括号(), 即 \1 指的是 (\-|\/|\.)
String regexDemo2 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}(\\-|\\/|\\.)\\d{1,2}$";
System.out.println(str.matches(regexDemo2)); // 返回true
}
}

五、字符串的替换与分解(使用正则表达式)

  1、public boolean matches(String regex);判断当前字符串对象是否与参数regex格式相匹配。
  2、public String replaceAll(String regex, String replacement);将字符串中符合regex格式的子串替换成replacement,此时并未改变原始字符串。

  3、public String[] split(String regex); 将字符串使用regex标记分割,并将分割后的单词存入字符串数组中。

 

 public class Test {
public static void main(String[] args) {
String regex = "[0-9]+";
String str = "hello123world123";
System.out.println("原始字符串为: " + str);//输出hello123world123 System.out.println("替换字符串后为: " +str.replaceAll(regex, " welcome ")); //输出hello welcome world welcome
System.out.println("原字符串不变:" + str); //不会改变原来的字符串,输出为hello123world123 System.out.println("输出切割后的字符串: ");
String digitWord[] = str.split(regex); // 以regex格式分割
for (String s : digitWord) {
System.out.println(s);
}
}
}
/*
测试结果为:
原始字符串为: hello123world123
替换字符串后为: hello welcome world welcome
原字符串不变:hello123world123
输出切割后的字符串:
hello
world
*/

Java基础--正则表达式的规则的更多相关文章

  1. Java基础-正则表达式(Regular Expression)语法规则简介

    Java基础-正则表达式(Regular Expression)语法规则简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正则表达式的概念 正则表达式(Regular Exp ...

  2. Java基础——正则表达式

    一.什么是正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符 ...

  3. 二十八、Java基础--------正则表达式

    在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题.为了更好的学 ...

  4. JAVA基础--正则表达式

    .  any character \d  A digit 0-9 \D  a non-digit [^0-9] \s  a whitespace character, 空白字符 \S  a non-w ...

  5. 黑马程序员:Java基础总结----正则表达式

    黑马程序员:Java基础总结 正则表达式   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import  java.util.regex.*; 符合一定规 ...

  6. Java基础七-正则表达式

    Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...

  7. JAVA基础篇NO1--环境变量的配置及命名规则

    标签(空格分隔): java基础 一:计算机概述 计算机:硬件和软件 硬件:控制器 运算器 存储器 输入和输出设备       存储器:外存(硬盘) 内存 软件:系统软件 应用软件   系统软件:wi ...

  8. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  9. Java基础巩固--正则表达式

    本篇文章是学习尚学堂的关于正则表达式的视频教程时,所做的笔记.供广大编程爱好者学习之用,也留给日后自己复习使用! 1.为什么要有正则表达式? 正则表达式可以方便的对数据进行匹配,可以进行更加复杂的字符 ...

随机推荐

  1. 谈MicroMessageTest的开始创建

    一开始,创建一个可以看到的jsp前端页面. 只不过不是用纯jsp页面访问,而是用Servlet doGet跳转至jsp页面,req.getRequestDispatcher(jsp页面的全称 还是全地 ...

  2. BEC listen and translation exercise 45

    So the Counselling Services we offer deal with any problems arising from your studies or in your lif ...

  3. Python解决中文字符的问题

    from __future__ import unicode_literals print(type("test")) #<type 'unicode'> Chinat ...

  4. BZOJ5324 JXOI2018 守卫

    传送门 这是我见过的为数不多的良心九怜题之一 题目大意 给定一段$n$个点构成的折线,第$i$个折点的坐标是$(i,h_i)$,你可以在$i$点放置一个视野,定义$i$能看到$j$当且仅当$i$处有视 ...

  5. Android App在Google App Store中搜不到

    情景:Android App在Google App Store上架成功,三星手机可以在Google App Store中搜索到,但是三星tablet却无法在Google App Store中搜索到,目 ...

  6. 51nod 1301 集合异或和——异或dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301 好题!看了TJ才会. 因为是不可重集合,所以当然有前 i 个 ...

  7. POJ2080:Calendar(计算日期)

    Calendar Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12842   Accepted: 4641 Descrip ...

  8. loadrunner的四个主要部件

    1.VUser Generator :性能脚本开发 2.Controller :提供多线程并发操作 3.Analysis :结果分析 4.Load Generator :负载生成器 ***负载生成器完 ...

  9. DTP模型之一:(XA协议之一)XA协议、二阶段2PC、三阶段3PC提交

    XA协议 XA是一个分布式事务协议,由Tuxedo提出.XA中大致分为两部分:事务管理器和本地资源管理器.其中本地资源管理器往往由数据库实现,比如Oracle.DB2这些商业数据库都实现了XA接口,而 ...

  10. day02 秘钥生成,免密访问命令

    hadoop免密登陆: 生成秘钥: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/aut ...