java学习笔记06--正则表达式

正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证、拆分、替换等操作。

例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法

不使用正则表达式

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "0123456789";
  4. boolean flag = true;   //定义一个标记变量
  5. char c[] = str.toCharArray();
  6. for (int i = 0; i < c.length; i++) {
  7. if(c[i]<'0'||c[i]>'9'){
  8. flag = false;
  9. break;
  10. }
  11. }
  12. if(flag){
  13. System.out.println("是全部由数字组成");
  14. }else{
  15. System.out.println("不是全部由数字组成");
  16. }
  17. }
  18. }

使用正则表达式

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "0123456789";
  4. if(Pattern.compile("[0-9]+").matcher(str).matches()){
  5. System.out.println("是全部由数字组成");
  6. }else{
  7. System.out.println("不是全部由数字组成");
  8. }
  9. }
  10. }

Pattern、Matcher类

这两个类为正则的核心操作类。这两个类都定义在java.util.regex包中.

Pattern类的主要作用是进行正则规范(如之前的“【0-9】”就属于正则规范)的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。

\d:表示数字,【0-9】

\D:表示非数字,【^0-9】

\w:表示字母、数字、下划线,【a-zA-Z0-9】

\W:【^a-zA-Z0-9】

以上的正则,如果要想驱动起来,则必须依靠Pattern类和Matcher类

Pattern主要是表示一个规则的意思,即:正则表达式的规则需要在Pattern类中使用。

Matcher类主要表示使用Pattern指定好的验证规则。

在Pattern类中如果要想取得Pattern类实例,则必须调用compile()方法。

例:验证一个字符串是否是合法的日期格式。

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "1990-04-13";
  4. String pattern = "\\d{4}-\\d{2}-\\d{2}";
  5. Pattern p = Pattern.compile(pattern);   //实例化Pattern类
  6. Matcher m = p.matcher(str);             //实例化Matcher类
  7. if(m.matches()){
  8. System.out.println("是合法日期格式");
  9. }else{
  10. System.out.println("不是合法日期格式");
  11. }
  12. }
  13. }

在Pattern类中也可以使用正则进行字符串的拆分功能。

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "AAA000BBB111CCC";
  4. String pattern = "\\d+";
  5. Pattern p = Pattern.compile(pattern);
  6. String s[] = p.split(str);
  7. for (int i = 0; i < s.length; i++) {
  8. System.out.println(s[i]);
  9. }
  10. }
  11. }

还可以使用Matcher类中的字符串替换功能。

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "AAA000BBB111CCC";
  4. String pattern = "\\d+";
  5. Pattern p = Pattern.compile(pattern);
  6. Matcher m = p.matcher(str);
  7. String s = m.replaceAll("---");
  8. System.out.println(s);   //AAA---BBB---CCC
  9. }
  10. }

String类对正则的支持

从之前的操作中,可以返现,很多的代码除了要求的字符串不同,使用的正则规则不同,基本上就没有什么特别的了。

所以在JDK1.4之后,java对正则进行了一些扩充,在String中开始直接支持正则的操作。

  1. public class T {
  2. public static void main(String[] args) {
  3. String str1 = "AAA000BBB";
  4. String str2 ="1990-04-13";
  5. String str3 = "i_love_you";
  6. System.out.println("字符串替换:"+str1.replaceAll("\\d+", "---"));
  7. System.out.println("字符串验证:"+str2.matches("\\d{4}-\\d{2}-\\d{2}"));
  8. String s[] = str3.split("_");
  9. System.out.println("字符串拆分:");
  10. for(int i=0;i<s.length;i++){
  11. System.out.println(s[i]);
  12. }
  13. }
  14. }

总结:

1、使用正则可以方便的完成字符串的验证、拆分、替换等复杂功能。

2、在开发中一般都会直接使用String类中提供好的正则支持,而往往很少直接使用Pattern类或Matcher类。

3、在一些正则应用的时候,对于一些敏感的字符要进行转义操作。

java学习笔记06--正则表达式的更多相关文章

  1. 【java学习笔记】正则表达式

    一.正则表达式 1.预定义字符集  . 表示任意一个字符 \d 表示任意一个数字 \w 表示任意一个单词字符(只能是数字.字母.下划线) \s 表示任意一个空白字符(\t\r\n\f\x0B) \D ...

  2. java学习笔记之正则表达式

    一般来说,正则表达式就是以某种方式来描述字符串,因此你可与说:"如果一个字符串符合有这些东西,那么它就是我正在找的东西. 1.要找一个数字,如果它可能有一个负号在最前面(可能没有,没有也是匹 ...

  3. 9.1(java学习笔记)正则表达式

    一.正则表达式 1.1正则表达式 正则表达式是描述一种规则,通过这个规则可以匹配到一类字符串. 2.1正则语法 2.1.1普通字符:字母.数字.下划线.汉字以及没有特殊意义的符号都是普通字符. 正则表 ...

  4. Java学习笔记二——正则表达式

    Java正则表达式 正则表达式的规则 “abc” 匹配字符串abc [abc] 匹配[]里任意一个字符 [a-z]: 匹配所有小写字母中的任意一个字符 [A-Z]: 匹配所有大写字母中的任意一个字符 ...

  5. Java学习笔记 06 数字格式化及数学运算

    一.数字格式化 DecimalFormat类 >>DecimalFormat是NumberFormat的子类,用于格式化十进制数,可以将一些数字格式化为整数.浮点数.百分数等.通过使用该类 ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  8. 20155234 2610-2017-2第九周《Java学习笔记》学习总结

    20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...

  9. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

随机推荐

  1. PredictionIO Open Source Machine Learning Server

    PredictionIO Open Source Machine Learning Server Build Smarter Software with Machine Learning Predic ...

  2. MySQL 修改字段类型或长度

    mysql> alter table 表名 modify column 字段名 类型;例如 数据库中address表 city字段是varchar(30) 修改类型可以用(谨慎修改类型,可能会导 ...

  3. Collections.sort方法对list排序的两种方式

    Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定 ...

  4. 一个带动画效果的颜色选择对话框控件AnimatedColorPickerDialog

    android4.4的日历中选择日程显示颜色的时候有一个颜色选择对话框非常漂亮,模仿他的界面我实现了一个类似的对话框,而且带有动画效果. 代码的实现可讲的地方不多,主要是采用了和AlertDialog ...

  5. Action的返回值类型总结

    Action的返回值 MVC 中的 ActionResult是其他所有Action返回类型的基类,下面是我总结的返回类型,以相应的帮助方法: 下面是这些方法使用的更详细的例子 一.返回View     ...

  6. javascript笔记整理(对象基础)

    一.名词解释 1.基于对象(一切皆对象,以对象的概念来编程) 2.面向对象编程(Object Oriented Programming,OOP) A.对象(JavaScript 中的所有事物都是对象) ...

  7. Maven+Eclipse+Spring MVC简单实例

    1. ToolsVersion and Preparations: Eclipse: 3.5 (eclipse-jee-galileo-win32) Maven: 2.0.11 Spring MVC ...

  8. Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php

    Atitit.dwr3 不能显示错误具体信息的解决方式,控件显示错误具体信息的解决方式 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...

  9. Qt布局管理

    原地址:http://blog.csdn.net/lastsoup/article/details/7028243 设计软件中各个部件的位置排列,有两种方法: 1.设置widget的在父窗体中的坐标和 ...

  10. Qt中使用OpenCV库

    原地址:http://blog.sina.com.cn/s/blog_5c70dfc80100qwi3.html 心情真是好啊,曾经一度想放弃使用Qt加OpenCV进行数字图像处理了,幸好坚持住了,今 ...