模式和匹配器

作为第一个示例,下述类可以用来测试一个输入字符串是否违反了正则表达式。第一个参数
是输入的用于匹配的字符串,随后的一个或多个正则表达式将会被应用于输入字符串。在
unix/linux 环境下,正则表达式必须以命令行的形式进行引用。


当我们创建正则表达式并查看它们是否产生我们所预期的行为时,下面的程序有助于我们对
这些正则表达式进行测试。


//: c12:TestRegularExpression.java
// Allows you to easly try out regular expressions.
// {Args: abcabcabcdefabc "abc+" "(abc)+" "(abc){2,}" }
import java.util.regex.*;


public class TestRegularExpression {
    public static void main(String[] args) {
    if(args.length < 2) {
            System.out.println("Usage:\n" + 
        "java TestRegularExpression " +
        "characterSequence regularExpression+");
            System.exit(0); 
        } 
        System.out.println("Input: \"" + args[0] + "\"");
        for(int i = 1; i < args.length; i++) {
            System.out.println( 
                "Regular expression: \"" + args[i] + "\"");
      Pattern p = Pattern.compile(args[i]);
      Matcher m = p.matcher(args[0]);
      while(m.find()) {
        System.out.println("Match \"" + m.group() +
                    "\" at positions " + 
                    m.start() + "-" + (m.end() - 1)); 
            } 
        } 
    } 
} ///:~


在 java 中,正则表达式是通过 java.util.regex 包里面的 Pattern  和 Matcher 类来实现
的。一个 Pattern 对象表示一个正则表达式的编译版本。静态的 complie()方法将一个
正则表达式字符串编译成 Pattern 对象。正如在前面例子中所看到的那样,我们可以使用
matcher()方法和输入字符串从编译过的 Pattern 对象中产生 Matcher 对象。Pattern
还有一个


static boolean ( regex,  input)


用于快速识别,如果可以在 input 中发现 regex 的话;以及一个 split()方法,它可以产
生一个按照 regex 的匹配而断开的字符串数组。


调用以输入字符串作为参数的 Pattern.matcher( )可以产生 Matcher 对象。接着可以使
用 Matcher 对象访问结果,并利用一些方法来判断各种类型的匹配是成功或是失败:


boolean matches()
boolean lookingAt()
boolean find()
boolean find(int start)
如果模式匹配整个输入字符串,则 matches( )方法成功,而且,如果输入字符串从一开始

就是模式的一个匹配,那么 lookingAt( )方法也是成功的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值