您好,来自 java doc 的内容如下:
UNIX_LINES
public static final int UNIX_LINES
启用 Unix 行模式。
在这种模式下,在 、 和 的行为中只识别行
'\n'
终止符。.
^
$
Unix 行模式也可以通过嵌入式标志表达式启用
(?d)
。
有没有人有其他词来定义它的服务?我知道“\n”转义序列仅在.
,^
和. 之后被识别$
。显然我被误解了。
I will try to explain it on .
since same rule apply for ^
and $
.
Normally dot .
matches every character except new line. In Unix only \n
is new line mark, so other characters like carriage return \r
are threated as normal characters.
Take a look at this String "A\r\nB\rC\nD"
. If you will try to find match for regex like.+
using
String data = "A\r\nB\rC\nD";
System.out.println(data);
Matcher m = Pattern.compile(".+").matcher(data);
while (m.find()) {
System.out.println("["+m.group()+"]");
}
you will get
[A]
[B]
[C]
[D]
but if add flag Pattern.UNIX_LINES
characters like \r
will also be possible match for .
and output will change into
[A
]
[B
C]
[D]
So first match is [A\r]
, second [B\rC]
and third [C]
至于它们如何专门应用于正则表达式行为;.
, ^
, 并$
取决于换行符的定义才能起作用。
.
匹配除换行符以外的任何内容^
可以匹配一行的开头$
可以匹配一行的结尾。这些中的每一个都取决于对行终止位置的正确定义。该UNIX_LINES
设置指示它根据标准 Unix 定义严格定义行终止符。默认情况下,它的定义更广泛,如 Pattern 文档中所示
至于匹配“abc\n”,我假设您正在使用Pattern.matches
或类似的东西,它必须匹配整个输入? ^
并且$
是零宽度。它们可以匹配换行符的任一侧,但不会消耗换行符。您可以\n
通过简单地将其放入您的模式中来使用 ,例如abc\n
,或者您也可以$
按照您的指示使用该字符,例如abc\n$
,或者如果您感觉活泼(?m)abc$$$$\n$$
。