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

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

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

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

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

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

字符的取值范围
1.[abc] : 表示可能是a,可能是b,也可能是c。
2.[^abc]: 表示不是a,b,c中的任意一个
3.[a-zA-Z]: 表示是英文字母
4.[0-9]:表示是数字 简洁的字符表示
.:匹配任意的字符
\d:表示数字
\D:表示非数字
\s:表示由空字符组成,[ \t\n\r\x\f]
\S:表示由非空字符组成,[^\s]
\w:表示字母、数字、下划线,[a-zA-Z0-9_]
\W:表示不是由字母、数字、下划线组成 数量表达式
1.?: 表示出现0次或1次
2.+: 表示出现1次或多次
3.*: 表示出现0次、1次或多次
4.{n}:表示出现n次
5.{n,m}:表示出现n~m次
6.{n,}:表示出现n次或n次以上 逻辑表达式
1.XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分
2.X|Y:表示X或Y,比如"food|f"匹配的是foo(d或f),而"(food)|f"匹配的是food或f
3.(X):子表达式,将X看做是一个整体 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 :使用正则表达式使代码变得非常简洁。
 package test_regex;
public class Test01 {
public static void main(String[] args){
String str = "1234567";
// char[] c = str.toCharArray();
// boolean b = true;
// for(char c1:c){
// if(!(c1>='0'&&c1<='9')){
// b = false;
// break;
// }
// }
// System.out.println(b); String regex = "\\d+";
System.out.println(str.matches(regex));
}
}

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

 package test_regex;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class TestMatcher01 {
public static void main(String[] args){
String str = "1234567abc";
String regex = "\\w{10,}";
// Pattern pat = Pattern.compile(regex);
// Matcher mat = pat.matcher(str);
// System.out.println(mat.matches());
System.out.println(str.matches(regex));
}
}

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

 package test_regex;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class TestMatcher02 {
public static void main(String[] args){
String str = "12Y34h56dAd7";
String regex = "[a-zA-Z]+";
// Pattern pat = Pattern.compile(regex);
// Matcher mat = pat.matcher(str);
// System.out.println(mat.replaceAll(":"));
System.out.println(str.replaceAll(regex,"-"));
}
}

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

 package test_regex;
import java.util.regex.Pattern;
public class TestPattern01 {
public static void main(String[] args){
String str = "Tom:30|Jerry:20|Bob:25";
String regex = "\\|";
// Pattern pat = Pattern.compile(regex);
// String[] arr = pat.split(str);
String[] arr = str.split(regex);
for(String s:arr){
System.out.println(s);
}
}
}

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

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

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

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

    https://www.cnblogs.com/xhj123/p/6032683.html 正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符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. IOS第七天(2:UiTableView 加上数据分离)

    ****加上数据分离 #import "HMViewController.h" #import "HMStudent.h" @interface HMViewC ...

  2. JavaScript 入门教程二 在HTML中使用 JavaScript

    一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...

  3. 【转】NGUI研究院之自适应屏幕(十)

    http://www.xuanyusong.com/archives/2536 现在用unity做项目 90%都是用NGUI,并且我个人觉得NGUI应该算是比较成熟的UI插件,虽然他也存在很多问题,但 ...

  4. Mac更换Sublime Text程序图标

    更换方法: 下载.icns格式一个图标.http://www.easyicon.net/language.en/iconsearch/sublime/ 终端执行:open /Applications/ ...

  5. Maven-004-使用 Nexus 搭建 maven 私服

    从去年至今,自己一直在学习自动化测试工具,想利用自动化工具尽可能的将重复的.关键的.耗时耗力的工作实现自动化,减轻日常测试工作,提升测试效率.在学习的过程中,将 maven 作为了项目开发管理工具,进 ...

  6. VMware安装的相关文章

    1.在虚拟机中安装CentOS7(百度文库) 2.VM虚拟机下安装Centos7.0图文教程(centos中文站) 2016年8月10日11:30:03

  7. Windows平台配置免安装的MySQL

    1.下载 官网下载免安装文件(本文使用的是mysql-5.6.33-win32.zip)解压到E:\MySQL\mysql-5.6.33打开E:\MySQL\mysql-5.6.33\my-defau ...

  8. VMware简介

    VMware(中文名威睿”) 虚拟机软件,是全球桌面到数据中心虚拟化解决方案的领导厂商.VMware vSphere 是VMware 的一个虚拟化产品,它包括vCenter,ESX Server,ES ...

  9. MVC过滤器详解 面向切面编程(AOP)

    面向切面编程:Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题.AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个 ...

  10. RDIFramework.NET ━ 9.5 组织机构管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.5 组织机构管理 -Web部分 组织机构管理模块提供直观方便的组织机构管理,以树型结构显示单位和部门的机构体系,可根据需要进行 ...