在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题。为了更好的学习正则表达式,本文将讲述正则表达式的相关应用。

正则表达式

概念:用于专门操作字符串

好处:可以简化对字符串的复杂操作

特点:用于一些特定的符号来表示一些代码操作,这样就简化书写

弊端:符合定义越多,正则越长,阅读性越差

注意:

1.用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false

2.正则表达式中反斜线成对出现

字符类

[abc]                         a、b 或 c(简单类) 只能是abc中的一个

[^abc]                       任何字符,除了 a、b 或 c(否定)

[a-zA-Z]                    a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]]                  a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]]               d、e 或 f(交集)

[a-z&&[^bc]]              a 到 z,除了 b 和 c:[ad-z](减去)

[a-z&&[^m-p]]            a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

.                                 任何字符(与行结束符可能匹配也可能不匹配)

\d                               数字:[0-9]

\D                              非数字: [^0-9]

\s                               空白字符:[ \t\n\x0B\f\r]

\S                              非空白字符:[^\s]

\w                             单词字符:[a-zA-Z_0-9]

\W                             非单词字符:[^\w]

数量词

X?                             X,一次或一次也没有

X*                            X,零次或多次

X+                           X,一次或多次

X{n}                        X,恰好 n 次

X{n,}                       X,至少 n 次

X{n,m}                     X,至少 n 次,但是不超过 m 次

边界匹配器

^                            行的开头

$                             行的结尾

\b                           单词边界

\B                           非单词边界

\A                           输入的开头

\G                          上一个匹配的结尾

\Z                           输入的结尾,仅用于最后的结束符(如果有的话)

\z                           输入的结尾

\\d?                         表示一个数字或者没有数字

为了可以让规则的结果被重用,可以将规则封装成一个组。用()完成,组的出现都有编号,从1开始,想要使用一样的组可以通过\n(n就是组的编号)的形式来获取 有几个组括号就有几组。

正则中的方法

1,匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。

matches(String regex)

告知此字符串是否匹配给定的正则表达式。

2,切割:String split();

split(String regex, int limit)

根据匹配给定的正则表达式来拆分此字符串。

3,替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组

replaceAll(String regex, String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

  4,获取:将字符串中的符合规则的子串取出

方法

1,将正则表达式封装成对象。

Pattern p = Pattern.compile(reg);

compile(String regex)

将给定的正则表达式编译到模式中。

2,让正则对象和要操作的字符串相关联。

Matcher m = p.matcher(str);

matcher(CharSequence input)

创建匹配给定输入与此模式的匹配器。

3,关联后,获取正则匹配引擎。

4,通过引擎对符合规则的子串进行操作,比如取出

while(m.find())

{

System. out.println(m.group());

System. out.println(m.start()+"...." +m.end());

}

二十八、Java基础--------正则表达式的更多相关文章

  1. Java学习笔记二十八:Java中的接口

    Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...

  2. Android开发(二十八)——基础功能函数

    /** * 判断事件是否在控件中 * * @param view * @param ev * @return * @see http://m.blog.csdn.net/blog/aygxylxk/8 ...

  3. 二十、Java基础--------IO流之其他对象

    在上面两篇文章中介绍了IO体系并详细介绍了字节流以及字符流,本文主要是讲述操作文件的File.转化流.标准输入与输出.Properties.打印流以及序列流. File File英文为"文件 ...

  4. Java实习生常规技术面试题每日十题Java基础(八)

    目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...

  5. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  6. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  7. JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤

    JAVA之旅(二十八)--File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤 我们可以继续了,今天说下File 一.File概述 文件的操作是非常 ...

  8. 《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)

    1.简介 在前边的文章中窗口句柄切换宏哥介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题.很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭, ...

  9. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  10. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

随机推荐

  1. 天猫登录源码 POST C#

    HttpHelper 请从网络中搜索: public partial class LoginTMall : Form { public LoginTMall() { InitializeCompone ...

  2. php数组操作的基本函数

    数组的键名和值array_values($arr);获得数组的值array_keys($arr);获得数组的键名array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖) ...

  3. 如何记录搜索引擎爬行记录php版

    写博客也有一段时间了,为什么搜索引擎迟迟不收录你的页面呢?想知道每天都有哪些蜘蛛“拜访”你的网站吗?作为一名网站长,有必要知道每天都有哪些蜘蛛爬行过你的网站,以便于了解各搜索引擎蜘蛛爬行频率,对网站进 ...

  4. Spring注入方式及注解配置

    一:基于xml的DI(Dependency Injection) 注入类型: 定义学生Student实体类和小汽车Car实体类:进行封装和生成ToString(),并自定义属性Car Student ...

  5. css3动态旋转魔方练习

    图片素材: html部分: <!DOCTYPE html><html><head> <meta charset="utf-8" /> ...

  6. c#操作xml文件(XmlDocument,XmlTextReader,Linq To Xml)

    主界面

  7. java 实现冒泡排序

    public void bubbleSort(int[] arr) { boolean swapped = true; int j = 0; int tmp; while (swapped) { sw ...

  8. 小型移动 webApp Demo 知识点整理

    包括内容: css初始化.css全局设置.常用meat标签.rem适配.flex布局.相关技巧(手势库使用.多行截字.1像素边线.点击状态.placeholder居中等) reset 引用 norma ...

  9. 学习Http协议和当下主流的Rx+Retrofit的主流框架

    所有的劳累都会烟消云散了.不只在生活上,也对我的心态上发生了翻天覆地的变化.在和她在一起之前,我总觉得自己很小,不会去站在别人的角度替别人思考问题,没事就乱发脾气,抑或是一直沉迷于游戏.而和她在一起后 ...

  10. 记一次程序排错与std::getline

    今天忙活了半个下午,查找正式环境上面一个程序的问题.这个程序的作用是监控文件夹,处理每一个文件,分析每个文件的每行记录,然后将这个文件拆分成两个结果文件投放到另外两个不同的目录下面去,当处理完这个文件 ...