Java的正则表达式
Java正则表达式:定义了字符串的模式;可以用来搜索、编辑、或处理文本;
指定为字符串的正则表达式必须首先被编译为此类的实例。然后将得到的模式用于创建Matcher对象,依照正则表达式,该对象可以与任意字符序列匹配,执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式
因此,典型的调用顺序是:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaaaabccccc");
boolean b = m.matches();
如下例子中:
boolean isMatch = Pattern.matches(pattern,content);仅在使用一次正则表达式时,可以方便使用matches方法。
Java.util.regex包主要包括以下三个类:
1、Pattern类:pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法,要创建一个Pattern对象,必须首先调用其公共静态编译方法,返回一个Pattern对象,该方法接受一个正则表达式作为它的第一个参数。
package cuiyuee; import java.util.regex.*; public class PatternTest { public static void main(String[] args) { // TODO Auto-generated method stub String content = "I am noob from runoob.com."; String pattern = ".*runoob.*"; boolean isMatch = Pattern.matches(pattern,content); System.out.println("字符串中是否包含了 'runoob' 子字符串?"+ isMatch); } }
2、Matcher类:Matcher对象是对输入字符串进行解释和匹配操作的引擎,与Pattern类一样,Matcher也没有公共构造方法,需要调用Pattern对象的matcher方法来获得一个Matcher对象。
Matcher类的方法:
索引方法:提供了有用的索引值,精确表明输入字符串中在哪能找到匹配。
public int start():返回以前匹配的初始索引。
public int start(int group):返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引。
public int end(int group):返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。
研究方法:用来检查输入字符串并返回一个布尔值,表示是否找到该模式。
public boolean lookingAt():尝试将从区域开头开始的输入序列与该模式匹配。
public boolean find():尝试查找与该模式匹配的输入序列的下一个子序列。
public boolean find(int start):重置此匹配器,尝试查找匹配该模式,从指定索引开始的输入序列的下一个子序列。
public boolean matches():尝试将整个区域与模式匹配。
替换方法:替换输入字符串里文本的方法。
public Matcher appednReplacement(StringBuffer sb,String replacement):实现非终端添加和替换步骤。
public StringBuffer appendTail(StringBuffer sb):实现终端添加和替换步骤
public String replaceAll(String replacement):替换模式与给定替换字符串相匹配的输入序列的每个字序列。
public String replaceFirst(String replacement):替换模式与给定替换字符串匹配的输入序列的第一个子序列
public static String quoteReplacement(String s):返回指定字符串的字面替换字符串。这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。
3、PatternSyntaxException类
PatternSyntaxException是一个非强制异常类,它指示一个正则表达式模式中的语法错误。
有以下方法帮助我们查看发生了什么错误。
public String getDescription():获取错误的描述。
public int getIndex():获取错误的索引。
public String getPattern():获取错误的正则表达式模式。
public String getMessage():返回多行字符串,包含语法错误及其索引的描述,错误的正则表达式模式和模式中错误索引的可视化指示。