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. [坑] treap

    先来挖个坑,以后有时间了来补上. treap: 学习资料: fhq式treap    http://hi.baidu.com/wdxertqdtscnwze/item/7b6a9419be7c68cd ...

  2. hdu5094 Maze

    --就是爬管道-- 还好内存给的多-- 不然就不会做了-- #include<iostream> #include<map> #include<string> #i ...

  3. Windows Server 2008 r2 64位激活

    1.工具:CW 下载链接:https://pan.baidu.com/s/1bphOkW3 密码:80d4 2.查看系统是否激活:计算机图标点右键,选择 属性,就可以查看激活情况 3.准备好CW工具 ...

  4. 《Go语言实战》摘录:6.4 并发 - 锁住共享资源

    6.4 锁住共享资源

  5. 突破 BTrace 安全限制

    http://blog.csdn.net/alivetime/article/details/6548615

  6. Nginx FastCGI的运行原理

    http://www.cnblogs.com/yinshoucheng-golden/p/6474034.html

  7. LAMP学习路线图

    站点开发概述 LAMP开发概述 HTML基础 CSS基础 DIV+CSS Javascript Jquery(Ajax) WAMP 环境搭建 PHP基本的语法,变量.数据类型,表达式,常量,流程控制, ...

  8. C程序设计的抽象思维-递归过程-砝码称重

    [问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...

  9. 解决ASP.NET MVC4中使用Html.DropDownListFor显示枚举值默认项问题

    从ASP.NET MVC 5开始,Html.DropDownListFor已经提供了对Enum的支持,但在这以前,需要通过帮助方法或扩展方法来让Html.DropDownListFor显示枚举值. 本 ...

  10. Delphi 获取命令行输出的函数

    function GetDosOutput(CommandLine: string; Work: string = 'C:\'): string; var SA: TSecurityAttribute ...