https://www.cnblogs.com/xhj123/p/6032683.html

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。

因为正则表达式是一个很庞杂的体系,所以我仅例举些入门的概念,更多的请参阅相关书籍及自行摸索。

*下面是java中正则表达式常用的语法:

逻辑表达式
XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分
X|Y:表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f
(X):子表达式,将X看做是一个整体

字符的取值范围
[abc] : 表示可能是a,可能是b,也可能是c。
[^abc]: 表示不是a,b,c中的任意一个
[a-zA-Z]: 表示是英文字母
[0-9]:表示是数字

简洁的字符表示
.:匹配任意的字符
\d:表示数字
\D:表示非数字
\s:表示由空字符组成,[ \t\n\r\x\f]
\S:表示由非空字符组成,[^\s]
\w:表示字母、数字、下划线,[a-zA-Z0-9_]
\W:表示不是由字母、数字、下划线组成

数量表达式
?: 表示出现0次或1次
+: 表示出现1次或多次
*: 表示出现0次、1次或多次
{n}:表示出现n次
{n,m}:表示出现n~m次
{n,}:表示出现n次或n次以上

java中提供了两个类来支持正则表达式的操作
分别是java.util.regex下的Pattern类和Matcher类
使用Pattern类进行字符串的拆分,使用的方法是String[] split(CharSequence input)
使用Matcher类进行字符串的验证和替换,
匹配使用的方法是boolean matches()
替换使用的方法是 String replaceAll(String replacement)

Pattern类的构造方法是私有的
所以我们使用Pattern p = Pattern.compile("a*b");进行实例化
Matcher类的实例化依赖Pattern类的对象Matcher m = p.matcher("aaaaab");

在实际的开发中,为了方便我们很少直接使用Pattern类或Matcher类,而是使用String类下的方法
验证:boolean matches(String regex)
拆分: String[] split(String regex)
替换: String replaceAll(String regex, String replacement)

下面是正则表达式的简单使用:
1、Test01.java :使用正则表达式使代码变得非常简洁。

 1 package test_regex;
2 public class Test01 {
3 public static void main(String[] args){
4 String str = "1234567";
5 // char[] c = str.toCharArray();
6 // boolean b = true;
7 // for(char c1:c){
8 // if(!(c1>='0'&&c1<='9')){
9 // b = false;
10 // break;
11 // }
12 // }
13 // System.out.println(b);
14
15 String regex = "\\d+";
16 System.out.println(str.matches(regex));
17 }
18 }

2、TestMatcher01.java(Matcher类的使用,用于字符串的验证)

 1 package test_regex;
2 import java.util.regex.Pattern;
3 import java.util.regex.Matcher;
4 public class TestMatcher01 {
5 public static void main(String[] args){
6 String str = "1234567abc";
7 String regex = "\\w{10,}";
8 // Pattern pat = Pattern.compile(regex);
9 // Matcher mat = pat.matcher(str);
10 // System.out.println(mat.matches());
11 System.out.println(str.matches(regex));
12 }
13 }

3、TestMatcher02.java(Matcher类的使用,用于字符串的替换)

 1 package test_regex;
2 import java.util.regex.Pattern;
3 import java.util.regex.Matcher;
4 public class TestMatcher02 {
5 public static void main(String[] args){
6 String str = "12Y34h56dAd7";
7 String regex = "[a-zA-Z]+";
8 // Pattern pat = Pattern.compile(regex);
9 // Matcher mat = pat.matcher(str);
10 // System.out.println(mat.replaceAll(":"));
11 System.out.println(str.replaceAll(regex,"-"));
12 }
13 }

4、TestPattern01.java(Pattern类的使用,用于字符串的拆分)

 1 package test_regex;
2 import java.util.regex.Pattern;
3 public class TestPattern01 {
4 public static void main(String[] args){
5 String str = "Tom:30|Jerry:20|Bob:25";
6 String regex = "\\|";
7 // Pattern pat = Pattern.compile(regex);
8 // String[] arr = pat.split(str);
9 String[] arr = str.split(regex);
10 for(String s:arr){
11 System.out.println(s);
12 }
13 }
14 }

5、TestRegex01.java(大概判断一个邮箱地址是否合法)

 1 package test_regex;
2 public class TestRegex01 {
3 //判断一个邮箱地址是否合法
4 public static void main(String[] args){
5 //这里默认邮箱的后缀是.com或.net.cn
6 String str = "aa@aa.net.cn";
7 String regex = "\\w+@\\w+\\.(com|net.cn)";
8 System.out.println(str.matches(regex));
9 }
10 }

java中正则表达式基本用法(转)的更多相关文章

  1. java中正则表达式基本用法

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...

  2. JAVA中正则表达式学习总结

    一.JAVA中正则表达式相关的类 1. java.util.regex.Pattern 该类用于编译模式,模式可以理解为一个正则表达式,比如:a*b. 用法如下: // 创建模式 Pattern p ...

  3. java成神之——java中string的用法

    java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...

  4. Java中正则表达式的使用(常用的方法)

    这两天回想了一下正则表达式的使用,顺便就总结了一下java的javascript中使用正则表达式的用法,需要看javascript中使用正则的朋友可以看我的另一篇总结,下面我就简单的介绍一下java中 ...

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

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

  6. java中this的用法?

    2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...

  7. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  8. Java中正则表达式去除html标签

    Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...

  9. JAVA中正则表达式常用的四个方法

    JAVA中正则表达式处理字符串的四个常用方法:匹配.分割.替换.截取.其跟字符串的常用函数相似,但是使用正则表达式会更简单.更加简洁.下面是具体的例子: public class TestRegex ...

随机推荐

  1. FCKeditor如何升级CKEditor及使用方法

    之前编辑器用的是FCKeditor,因为项目原因需要升级为最新版本4.2.2,发现是已经更名为CKEditor. 百度了一下,据官方的解释,CK是对FCK的代码的完全重写. 项目环境是asp.net的 ...

  2. Mysql数据库大表归档操作

    由于公司的某个系统数据表过亿,考虑到数据表的压力.所以根据某个时间点对数据表做了一个归档.以下的操作是在当前的数据库新建表用于存储历史数据,然后再对生产表做一个清理操作.如果有条件的话可以把归档的数据 ...

  3. [置顶] android socket 聊天实现与调试

    网上很多基于Socket的聊天实现都是不完整的... 结合自己的经验给大家分享一下,完整代码可以在GitHub里获取https://github.com/zz7zz7zz/android-socket ...

  4. Day14 自己定义泛型类的使用

    泛型的引入和体现: 问题:集合中能够存储各种类型的元素,可是由于集合能够存储各种类型数据.在获取集合中元素时,就会造成数据不安全. public class GenericDemo { public ...

  5. Snmp学习总结(五)——WindowsServer2008安装和配置SNMP

    一.安装SNMP 在Windows Server 2008以及Windows Server 2008 R2中,SNMP是以一个服务器功能的形式存在的,SNMP的安装步骤如下所示: 1.打开[开始]→[ ...

  6. 基于设备树的TQ2440的中断(1)

    作者 姓名:彭东林 E-mail:pengdonglin137@163.com QQ:405728433 平台 板子:TQ2440 内核:Linux-4.9 u-boot: 2015.04 工具链: ...

  7. 使用Visual Studio 2012远程调试Windows Azure网站

    登录Windows Azure门户,点击"所有项目"中的网站名称. 点击"配置". 在"远程调试"选项中选择"打开",在 ...

  8. Delphi加载驱动

    program Project2; uses Windows, Native, JwaWinType, Unit_Driver; function Is2KXp(): Boolean; var OSV ...

  9. Redis客户端集群

        1.Redis集群一般分为两类,即3.0版本后的服务端集群实现,3.0版本前的客户端集群实现,服务端集群即Redis Cluster(官方实现),采用slot槽的概念(分片,所有服务端redi ...

  10. Ioc:The basic pattern for integrating Autofac into your application

    The basic pattern for integrating Autofac into your application is: Structure your app with inversio ...