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

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

  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. chrome浏览器的跨域设置-包括版本49前后两种设置 ,windows&mac

    做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程.但是新版本的chrome浏览器提 ...

  2. java--xml文件读取(SAX)

    SAX解析原理: 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏: 创建xml解析需要的handler(parser.parse(file,handler)) package com ...

  3. POJ-1741(树分治)

    树的点分治 给出详细的讲解!!点这里打开论文-分治算法在树的路径问题中的应用 本题目是他讲的第一个例题: 我的理解:每次都找树的重心,计算以重心为根的子树之间所贡献的答案.不断这样下去:如果这棵树是一 ...

  4. FFmpeg内存操作(三)内存转码器

    相关博客列表 : FFMPEG内存操作(一) avio_reading.c 回调读取数据到内存解析 FFMPEG内存操作(二)从内存中读取数及数据格式的转换 FFmpeg内存操作(三)内存转码器 本文 ...

  5. Unity3d中SendMessage 用法

      Message相关有3条指令:SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的ScriptBroadcastM ...

  6. BZOJ1067:[SCOI2007]降雨量

    浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...

  7. 1.4 isAlive()方法

    方法isAlive()是判断当前线程是否处于活动状态. 线程代码: public class TestThread extends Thread{ @Override public void run( ...

  8. seaweedfs安装配置使用

    Saeweedfs是一个由golang语言开发的分布式对象存储系统,很适合做图片服务器,性能很好,安装操作都很简单,并且可兼容挂载提供路径访问的方式,可以较为便捷的将nginx+nfs此类的文件服务器 ...

  9. html锚链接

    锚点(anchor):其实就是超链接的一种,一种特殊的超链接 普通的超链接,<a href="路径"></a> 是跳转到不同的页面 而锚点,<a hr ...

  10. 哪个U盘启动工具能安装红帽系统,

    安装红帽子,不要使用windows系统下的PE启动盘,两者引导方式不一样,不通用的.正确的方法是网上下载红帽子的ISO镜像文件后,用UltraISO这个工具写入优盘或者光盘,得到的系统盘才可以启动电脑 ...