作为第一个示例,下述类可以用来测试一个输入字符串是否违反了正则表达式。第一个参数
是输入的用于匹配的字符串,随后的一个或多个正则表达式将会被应用于输入字符串。在
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( )方法成功,而且,如果输入字符串从一开始
是输入的用于匹配的字符串,随后的一个或多个正则表达式将会被应用于输入字符串。在
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( )方法也是成功的。