另一可供选择的compile( )方法接受影响正则表达式的匹配行为的标记作为其参数:
PatternPattern.compile(String regex, int flag)
在这些标记中,特别有用的是 Pattern.CASE_INSENSITIVE、Pattern.MULTILINE和
Pattern.COMMENTS(有助于理清程序和文档管理)。注意大多数标记的行为也可以通过
向我们的正则表达式中(在我们所期望模式产生效用的位置之前)插入加括号的字符(见表
中标记下面的内容)来获得。
我们可以通过“OR” (‘|’)操作,将这些标记和其他标记相结合:
//:c12:ReFlags.java
importjava.util.regex.*;
importcom.bruceeckel.simpletest.*;
public classReFlags {
private static Test monitor = new Test();
public static void main(String[] args) {
Pattern p = Pattern.compile("^java",
Pattern.CASE_INSENSITIVE |Pattern.MULTILINE);
Matcher m = p.matcher(
"java has regex\nJava hasregex\n" +
"JAVA has pretty good regularexpressions\n" +
"Regular expressions are inJava");
while(m.find())
System.out.println(m.group());
monitor.expect(newString[] {
"java",
"Java",
"JAVA"
});
}
} ///:~
这个程序创建了一个模式,可以匹配以 “java”、 “Java”、 “JAVA”等开始的行,它尝试着
为一个多行集里面的每一行进行匹配(匹配起始于字符序列的首部,结束于字符序列中每一
行的终结符)。注意group( )方法仅产生匹配部分。