带有Java的正则表达式中的Pattern.UNIX_行
您好,这里是java文档中的以下内容: UNIX\u行带有Java的正则表达式中的Pattern.UNIX_行,java,regex,Java,Regex,您好,这里是java文档中的以下内容: UNIX\u行 public static final int UNIX\u行 启用Unix行模式 在这种模式下,只有'\n'行终止符在 、^和$的行为 Unix行模式也可以通过嵌入式标志表达式启用 (?d) 有人用别的词来定义它的作用吗?我知道“\n”转义序列只有在、^和$之后才能识别。 显然我被误解了。我将尝试在上解释它,因为同样的规则适用于^和$ 通常点匹配除新行以外的所有字符。在Unix中,只有\n是新行标记,因此其他字符,如回车\r将被视为普通字
public static final int UNIX\u行
启用Unix行模式
在这种模式下,只有'\n'
行终止符在
、^
和$
的行为
Unix行模式也可以通过嵌入式标志表达式启用
(?d)
有人用别的词来定义它的作用吗?我知道“\n”转义序列只有在
、^
和$
之后才能识别。
显然我被误解了。我将尝试在
上解释它,因为同样的规则适用于^
和$
通常点
匹配除新行以外的所有字符。在Unix中,只有\n
是新行标记,因此其他字符,如回车\r
将被视为普通字符
看看这个字符串“a\r\nB\rC\nD”
。如果您试图使用
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()+"]");
}
你会得到
[A]
[B]
[C]
[D]
但是如果添加flagPattern.UNIX\u行
字符,如\r
也可能与
匹配,输出将更改为
[A
]
[B
C]
[D]
因此,第一个匹配项是
[A\r]
,第二个匹配项是[B\rC]
,第三个匹配项是[C]
,它们具体如何应用于正则表达式行为<代码>、^
和$
取决于换行功能的定义
匹配除换行符以外的任何内容
可以匹配行首^
可以匹配行尾$
UNIX\u line
设置指示它严格按照标准UNIX定义定义行终止符。默认情况下,它的定义更宽泛
至于匹配“abc\n”,我假设您使用的是模式。匹配或类似的东西,它们必须匹配整个输入<代码>^
和$
为零宽度。它们可以在换行符的任意一侧匹配,但不会使用换行符。您可以通过简单地将\n
放入您的模式中来使用\n
,或者您也可以按照指示使用$
字符,如abc\n$
,或者如果您感到心情愉快(?m)abc$$$$\n$
模式也可能对您有用,这取决于您试图完成的任务。您可能也想参考。@devnull我可以举个简单的例子吗?我理解\n和\r等之间的区别,但当我尝试类似模式:“abc$”匹配引擎:“abc\n”时,它似乎不起作用