在对字符串进行处理时一方面可以利用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. 爬虫, 获取登录者的外网IP

    笔者学习了一下用爬虫, 获取登录者的外网IP. 首先导入Jsoup的jar包 public class RetrivePage { private static String url="ht ...

  2. vim基本命令

    vim基本命令     1.vim#在命令行中输入vim,进入vim编辑器2.i#按一下i键,下端显示 --INSERT--#插入命令,在vim中可能任意字符都有作用3.Esc#退出i(插入)命令进行 ...

  3. javascript平时小例子⑨(小型抽奖功能)

    <!doctype html><html lang="en"> <head> <meta charset="utf-8" ...

  4. 试验添加RAC(ORA10G)节点

    删除一个RAC节点:http://www.cnblogs.com/myrunning/p/4548624.html 1.1安装CLUSTERWARE软件 备注:在做添加删除节点时,10G版本一定要注意 ...

  5. MySQL模糊查询

    第一种最土的方法:使用like语句第二种用全文索引 有两种方法,第一种最土的方法:使用like语句第二种听涛哥说用全文索引,就在网上搜一下: 如何在MySQL中获得更好的全文搜索结果 mysql针对这 ...

  6. 諾基亞定制的Android系統名為 Z Launcher

    N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個 ...

  7. java 实现冒泡排序

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

  8. python类型转换

    1.数字转字符串 str(42) == "42" 2.字符串转数字 int("42") == 42 3.字符转ascii码 ord("a") ...

  9. Quartz2之入门示例【转】

    原文地址:http://liuzidong.iteye.com/blog/1118992 环境:XP+Myeclipse6.5+JDK1.6 quartz官网:http://www.quartz-sc ...

  10. Week 1:2015/4/27~2015/5/3

    Update everyday.(Last edit:4/30 01:00) Task 1:TPO X 2.5(finish 1,then finish 2 more) Task 2:TC Tarja ...