6

从这个API

多线

public static final int MULTILINE

启用多行模式。在多行模式下,表达式^$匹配分别在行终止符或输入序列的结尾之后或之前。默认情况下,这些表达式只匹配整个输入序列的开头和结尾。

多行模式也可以通过嵌入式标志表达式启用(?m)

Pattern.MULTILINE任何人都可以制作一个真实的代码示例,说明使用标准设置和标准设置创建模式的区别吗?

正如教程所解释的那样,默认的边界匹配器^应该匹配行首和行尾。$

通过使用它会改变什么Pattern.MULTILINE

4

1 回答 1

9

人为的示例:您想匹配 Java 源文件中的特定导入行,例如:

import foo.bar.Baz;

为了匹配输入中任何位置的该行,即多行,更简单的解决方案是Pattern.MULTILINE与此正则表达式一起使用:

^\s*import\s+foo\.bar\.Baz\s*;\s*$

在这里,^将在换行符之后和$之前匹配。在这种情况下这是可取的。

和:

边界匹配器 ^ 作为默认值应该匹配行的开头和 $ 本教程解释的行尾。

这是不真实的。默认情况下,匹配输入^的开头,并匹配输入的结尾。$

插图:

public static void main(final String... args)
{
    final Pattern p1 = Pattern.compile("^dog$");
    final Pattern p2 = Pattern.compile("^dog$", Pattern.MULTILINE);

    final String input = "cat\ndog\nTasmanian devil";

    System.out.println(p1.matcher(input).find());
    System.out.println(p2.matcher(input).find());
}

这输出:

false
true
于 2013-07-11T11:55:32.253 回答