在对字符串进行处理时一方面可以利用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. Linux查看进程PID信息

    ps -ef|grep 进程名 可检索到具体进程PID以及启动命令行信息 ls -l /proc/进程ID Linux在启动程序时会在 /proc/PID 目录下以PID为名称创建一个文件存储相关进程 ...

  2. JavaScript之闭包就是个子公司

    在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有 ...

  3. servlet配置restful

    所需jar包如下,jar下载地址如下http://download.csdn.net/detail/zhouminglan1992/9730354 1.web.xml配置 <!--给servle ...

  4. maxscale

    一.maxscale简介1.MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换.2.官网:https://mariadb ...

  5. Flink – Trigger,Evictor

    org.apache.flink.streaming.api.windowing.triggers;   Trigger public abstract class Trigger<T, W e ...

  6. IOS 开发教程

    http://www.raywenderlich.com/category/ios http://www.raywenderlich.com/50310/storyboards-tutorial-in ...

  7. C++求一个十进制的二进制中1的个数

    int oneNumInBinary(int n){ ; while(n){ n = n&(n-); cnt++; } return cnt; }

  8. WP8.1 侧边滑动Item

    效果图 我看ios 和安卓上有好多类似的Item的效果,UWP上有微软官方的库,其中也有类似得效果,看样子WP8.1没有啊,顺便我的程序也是需要,我也就仿了一个. 具体思路是: 触摸控制GRId在CA ...

  9. Issue 2:Introduction 方法论

    1 清晰的思路 论文投稿完毕,彻底完事儿后,原本很反感的论文书写过程也有了些许心得:论文就是科研工作的文字总结,知识再提炼的过程. 想要写好Introduction,脑子里的一条主线必须清楚. 1.1 ...

  10. (转载)solr时区问题解决方案

    solr默认的使用的是utc格林尼治时间,与我们的GMT+8相差8个小时,网上好多解决办法是在自己应用中的时间上加8个小时和减8个小时做变换:或者不用date类型,改为long. 个人感觉这两个办法都 ...