正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符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第16天(5,Quartz2D雪花)

    *** #import "HMView.h" @interface HMView() { int count; } @property (nonatomic, assign) CG ...

  2. C# 结构转化

    一.string 转 char[] string ss = "alsofly"; char[] cc = ss.ToCharArray(); 二.char[] 转 string c ...

  3. Algorithm | Tree traversal

    There are three types of depth-first traversal: pre-order,in-order, and post-order. For a binary tre ...

  4. IAR EW8051-8.10.4安装及破解方法

    第一步:获取破解license 1: 点击桌面左下角“开始”按钮,找到cmd.exe,右键创建cmd.exe 快捷方式到桌面: ————如果是windows7 ,请右键点击cmd.exe 快捷图标,点 ...

  5. Day3~Day7(2016/1/23~2016/1/27)

    活动的生命周期:onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart(); 活动的启动模式:standard ...

  6. ios编程之网络请求

    网络请求有GET请求和POST请求,get和post实现的时候可以选择同步或者异步实现.看一个请求是GET还是POST就看网址后面有没有携带请求体. GET与POST 区别  1.get请求 请求的网 ...

  7. LeetCode Alien Dictionary

    原题链接在这里:https://leetcode.com/problems/alien-dictionary/ 题目: There is a new alien language which uses ...

  8. 函数类型+WINAPI+函数名(例如inline DWORD static WINAPI RecordToKeys(const DRWT& theDRWT,WTSBH* pKey,DWORD dwMaxNum)

    winapi标识符在WINDEF.H定义,语句如下: #define winapi __stdcall 让我们说说这个__stdcall stdcall调用约定 stdcall很多时候被称为pasca ...

  9. dubbo源码分析3-service bean的创建与发布

    dubbo源码分析1-reference bean创建 dubbo源码分析2-reference bean发起服务方法调用 dubbo源码分析3-service bean的创建与发布 dubbo源码分 ...

  10. Linux下安装APache

    1:在图形界面下下载apache 安装包,我下的是 httpd-2.2.9.tar.gz 源码安装包,地址是http://httpd.apache.org/download.cgi 2:用:gzip ...