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 条评论
登录 后参与评论

相关文章

来自专栏吾爱乐享

JAVA之学习system类的概述和成员方法

782
来自专栏LIN_ZONE

es6语法需要注意的部分

由于无符号右移运算的结果是一个 32 位的正数,所以负数的无符号右移运算得到的总是一个非常大的数字。例如,如果把 -64 右移 5 位,将得到 13421772...

754
来自专栏Python攻城狮

PostgreSQL数据类型

博客地址:https://ask.hellobi.com/blog/zhiji 欢迎大家来交流学习。

652
来自专栏Java学习网

Java实现的一个简单计算器,有字符分析功能

需求:实现一个简单的计算器来分析一个简单的表达式字符串。 表达式字符串可能包含括号,+ +或减号,非负整数和空格。 例子:“1 + 1 = 2,(1)“= 1(...

2455
来自专栏封碎

Python中的简单类型 博客分类: Python PythonCC++C#编程

整数 & 浮点数 整数有两种,分别是 int 和 long。其中 int 最大值是 2147483647 (sys.maxint),而 long 长度仅...

713
来自专栏我的博客

Zend FrameWork程序员来看看

1.php文件格式 只有php代码的文件结尾不允许出现?>结束 缩进要用4个空格而不是用tab 每行代码长度在80~120字符 2.命名约定 类名只允许使用数字...

3055
来自专栏张俊红

python数据分析学习笔记—python基础知识

python数据分析学习笔记系列——基础知识篇 总第44篇 ▼ ? 基本概念 1、数 在Python中有4种类型的数——整数、长整数、浮点数和复数。一般我们默认...

3195
来自专栏marsggbo

malloc函数及用法

动态存储分配 在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。 例如: int n; scanf("%d",&...

1798
来自专栏静默虚空的博客

[Java 基础]基础语法

Java代码基本规范 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 类名:对于所有的类来说,类名的首字母应该大写。如果类...

1838
来自专栏猿人谷

Single Number and Single Number II

[1] Given an array of integers, every element appears twice except for one. Find...

1935

扫码关注云+社区