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);
的u
( unicode的 上PCRE与模式串的附加功能)改性剂匝被视为( )。
等效于以下组:
(?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029})
它可以限制\R
匹配CR
,LF
或CRLF
只:
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