Java 正则表达式

正则表达式是一个特殊的字符序列,有助于你用一种专门的语法模式来匹配或找到其他字符串或字符串集。他们可以用来搜索、编辑或是操纵文本和数据。Java 提供了 java.util.regex 包来与正则表达式进行模式匹配。

正则表达式:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用一些特定的符号来表示一些代码的操作.这样就简化书写。所以学习正则表达式就是学习一些特殊符号的使用。

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

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

Java JDK 1.40版本包含了java.util.regex(一个完全开放、自带的正则表达式包)

在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。

Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的异常类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出异常。

java.util.regex

类 Pattern(final):正则表达式的编译表示形式。

static Pattern compile(String regex)

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

java.util.regex

类 Matcher(final):通过解释 Pattern 对 character sequence 执行匹配操作的引擎。

int end()

返回最后匹配字符之后的偏移量(最后但不包括的索引)。

int start()

返回以前匹配的初始索引。

String group()

返回由以前匹配操作所匹配的输入子序列。

具体操作功能:

1.匹配 boolean matches(String regex)

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

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

2.切割 String[] split(String regex)

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

3.替换 String replaceAll(String regex, String replacement)

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

String replaceFirst(String regex, String replacement)

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

4. 获取: 将字符串中符合规则的子串取出来。

操作步骤:

(1)将正则表达式封装成对象;

(2)让正则对象与要操作的字符串关联;

(3)关联后,获取一个正则匹配引擎(匹配器);

(4)通过引擎(匹配器)对符合规则的子串进行操作,比如取出。

import java.util.regex.*;

class RegexDemo

{

public static void main(String[] args)

{

getDemo();

}

public static void getDemo()

{

String str = "ming tian jiu yao fang jia le,hao bang!";

System.out.println(str);

String regex = "\\b[a-z]{4}\\b";// 查找四个单词的子字符串

// 将规则封装成对象。

Pattern p = Pattern.compile(regex);

// 让正则对象与要操作的字符串关联,返回一个匹配器。

// Matcher matcher(CharSequence input)。String实现了字符序列接口CharSequence

Matcher m = p.matcher(str);

// 通过引擎(匹配器)对符合规则的字符串进行操作,例如引擎对象的方法 matches()

//System.out.println(m.matches());

while (m.find())// 将规则作用到字符串上,并进行符合规则的子串查找。

{

System.out.println(m.group());// 用于获取匹配后的结果

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

}

}

}

原文发布于微信公众号 - 程序员阿凯(AKBC159)

原文发表时间:2016-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Deep learning进阶路

C++随记(五)---const 与 指针

C++随记(五)---const 与 指针 const 限定符它把一个对象转换成一个常量,const与define。两者都可以用来定义常量,但是const定...

1730
来自专栏码云1024

JAVA 第二天 关键字

2757
来自专栏Kevin-ZhangCG

[ Java面试题 ]基础篇之一

2075
来自专栏静晴轩

59分钟学会正则表达式

推荐几个正则表达式编辑器 Debuggex PyRegex Regexper 正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用,比如正则...

3775
来自专栏JavaEE

String类相关面试题很难?不要方,问题不大前言:一、字符串的创建:二、字符串的拼接:三、intern方法:总结:

Java中有一个String类,特别让人伤脑筋。因为它可以直接赋值,也可以new一下用构造器生成对象,还可以用加号拼接……这些不同的方式到底有什么区别?本文是个...

1585
来自专栏java一日一条

继承、接口与多态的相关问题

继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类...

782
来自专栏IT可乐

Java的深拷贝和浅拷贝

  关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷...

3176
来自专栏Albert陈凯

scala 隐式详解(implicit关键字)

掌握implicit的用法是阅读Spark源码的基础,也是学习Scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用...

2999
来自专栏Python爱好者

Java基础笔记07

923
来自专栏Python自动化测试

python的字符串学习(三)

学习Python语言,不得不学习在Python中,对字符串的处理,事实上,在Str类中提供了很多的方法来对字符串的处理,比如我们经常见的字符串的大小小写的处理,...

963

扫码关注云+社区