PHP正则表达式:如何在不使用[\ r \ n]的情况下匹配\ r和\ n?

我已经测试了\v(垂直空白)匹配\r\n及其组合,但是发现\v\r和不匹配\n。以下是我正在使用的代码。

$string = "

Test

";

if (preg_match("#\v+#", $string )) {

echo "Matched";

} else {

echo "Not Matched";

}

更明确地说,我的问题是,还有其他匹配的替代方法\r\n吗?

回答:

回答:

PCRE具有许多与换行相关的转义序列和替代方法。

好吧,您可以在此处使用一个漂亮的转义序列\R。默认情况下\R将匹配Unicode换行符序列,但可以使用其他替代方法进行配置。

匹配ASCII范围内的任何Unicode换行符序列。

preg_match('~\R~', $string);

这等效于以下组:

(?>\r\n|\n|\r|\f|\x0b|\x85)


匹配任何Unicode换行符序列;包括ASCII范围之外的换行符以及行分隔符(U+2028)和段落分隔符(U+2029),您都想打开u

unicode )标志。

preg_match('~\R~u', $string);

uunicode的 上PCRE与模式串的附加功能)改性剂匝被视为( )。

等效于以下组:

(?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029})


它可以限制\R匹配CRLFCRLF只:

preg_match('~(*BSR_ANYCRLF)\R~', $string);

等效于以下组:

(?>\r\n|\n|\r)

回答:

支持五种用于指示字符串中的换行符的约定:

(*CR)        carriage return

(*LF) linefeed

(*CRLF) carriage return, followed by linefeed

(*ANYCRLF) any of the three above

(*ANY) all Unicode newline sequences


\R在字符类内部没有特殊含义。与其他无法识别的转义序列一样,默认情况下将其视为文字字符“ R”。

以上是 PHP正则表达式:如何在不使用[\ r \ n]的情况下匹配\ r和\ n? 的全部内容, 来源链接: utcz.com/qa/403523.html

回到顶部