Regex阅读笔记(五)java操作篇

 首先一个demo程序

Java的正则表达式包为java.util.regex,主要是使用其中的Pattern和Matcher.

groupCount方法时候都可调用,而大多数方法都必须在匹配尝试成功之后才可调用.

主要的方法有:

boolean find()

返回的boolean值表示是否能找到匹配,如果有多次调用,每次都在上次的匹配位置之后尝试新的匹配.

public class Regex {
    public static void main(String[] args){
        String regex = "\\w+";
        Pattern pattern = Pattern.compile(regex);
        String str = "this is my";
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()){
            String matchedText = matcher.group();
            int matchedFrom = matcher.start();
            int matchedTo = matcher.end();
            System.out.println(matchedFrom+" "+matchedTo);
            System.out.println(matchedText);
        }

boolean find(int offset)

如果指定了整型参数,匹配尝试会从距离目标字符串开头offset个字符的位置开始,如果超出会报错,这种形式的find不会受当前检索范围的影响.

boolean matches()

返回正则表达式是否能完全匹配目标字符串中检索范围的那段文本.

boolean lookingAt()

返回正则表达式能否在当前目标字符串的当前检索范围中找到匹配.

group()

返回前一次应用正则表达式的匹配文本.

groupCount()

返回捕获型括号的数目

group(int num)

返回对应捕获型括号匹配的内容,group(0)就等于group()

 

输出分别是:

this is
2
this
is

int start(int num)

返回编号为num的捕获型括号所匹配文本的起点在目标字符串中的绝对偏移值.

int start()

返回整个匹配起点的绝对便宜值,就相当于start(0)

int end 与 int end(int num)对应于start

 

 

replace示例:

String myText = "Before Java 1.5 was Java 1.4.2 After Java 1.5 is Java 1.6";
String myRegex = "\\bJava\\s*1\\.([56])\\b";
Pattern p = Pattern.compile(myRegex);
Matcher m = p.matcher(myText);
System.out.println(m.replaceAll("Java $1.0"));

 如果只需要替换第一次出现的文本,可以使用replaceFirsr而不是replaceAll.此外明确知道目标字符串只存在一个匹配时,使用replacrFirst可以提高 效率.

posted on 2015-01-16 18:32  颓废的悠然  阅读(360)  评论(0编辑  收藏  举报

导航