正则表达式是一个特殊的字符序列,有助于你用一种专门的语法模式来匹配或找到其他字符串或字符串集。他们可以用来搜索、编辑或是操纵文本和数据。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());
}
}
}