Java 正则表达式

正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在某种语言中有细微的差别。
Java正则表达式和Perl的最为相似的。
java.util.regex包主要包括以下三个类:

Pattern类:
pattern对象是一个正则表达式的编译表示。 Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher类:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。 与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

public class RegexMatches{
   private static final String REGEX = "\\bcat\\b";
   private static final String INPUT = "cat cat cat cattie cat";
   public static void main(String args[]){
      Pattern p = Pattern.compile(REGEX);
      Matcher m = p.matcher(INPUT);//获取matcher对象
      int count = 0;
      while(m.find()){
     count++;
     System.out.println("Match number "+ count);
     System.out.println("start(): "+ m.start());
     System.out.println("end(): "+ m.end());
      }
   }
}

结果:

Match number 1
start(): 0
end(): 3
Match number 2
start(): 4
end(): 7
Match number 3
start(): 8
end(): 11
Match number 4
start(): 19
end(): 22

可以看到这个例子是使用单词边界,以确保字母 “c” “a” “t” 并非仅是一个较长的词的子串。它也提供了一些关于输入字符串中匹配发生位置的有用信息。

Start方法返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引,end方法最后一个匹配字符的索引加1。

matches 和lookingAt 方法

matches 和lookingAt 方法都用来尝试匹配一个输入序列模式。它们的不同是matcher要求整个序列都匹配,而lookingAt 不要求。

这两个方法经常在输入字符串的开始使用。

public class RegexMaches{
   private static final String REGEX = "FOO";
   private static final String INPUT = "FOOOO";
   private static Pattern pattern;
   private static Matcher matcher;
   public static void main(String args[]){
      pattern = pattern.compile(REGEX);
      matcher = pattern.matcher(INPUT);
      System.out.println("Current REGEX is: "+ REGEX);
      System.out.println("Current INPUT is: "+ INPUT);
      System.out.println("lookingAt(): "+ matcher.lookingAt());
      System.out.println("matches(): "+ matcher.matches());
   }
}

结果:

Current REGEX is: FOO
Current INPUT is: FOOOO
lookingAt(): true
matches(): false
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值