在对字符串进行处理时一方面可以利用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. 推荐Python Web开发测试驱动方法

    http://www.cnblogs.com/dkblog/archive/2013/06/14/3135914.html推荐 本人买的时候,京东打8.5折,现在降价啦,本书涵盖啦Django.Sel ...

  2. 畅通工程续——E

    E. 畅通工程续 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让 ...

  3. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识 1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id  selectty ...

  4. Cocos引擎开发者指南(1-5)

    Cocos引擎开发者指南 英文原版:http://www.cocos2d-x.org/docs/programmers-guide/1/ 中午翻译:http://www.cocos.com/doc/t ...

  5. PHP 常用的header头部定义汇总

    <?phpheader('HTTP/1.1 200 OK'); // ok 正常访问header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在header(' ...

  6. 简单实用JSTL标签库

    1. JSTL标签库是一个什么东东? 简单来说,有了它你就可以在类似HTML的JSP页面里面运用一些高级语法,实现迭代.条件判断.XML文档操作.国际化标签.SQL标签. 2. 如何使用 ? 参考网址 ...

  7. Linux Vsftpd 连接超时解决方法(被动模式)

    http://blog.csdn.net/qq_15766181/article/details/46554643 使用 FileZilla FTP Client 连接 Vsftpd FTP,在没有配 ...

  8. redis 简单应用

    Incr $views = Redis::incr('views'); $article_views = Redis::incr('article:' . $article_id . ':views' ...

  9. Swift 语法篇

    一.输出语句 print("Hello World") print("Hello World 11", "Hello World 22", ...

  10. 关于sed用法

    sed处理流程 sed的处理流程,简化后是这样的: 1.读入新的一行内容到缓存空间: 2.从指定的操作指令中取出第一条指令,判断是否匹配pattern: 3.如果不匹配,则忽略后续的编辑命令,回到第2 ...