我已经测试了\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与模式串的附加功能)改性剂匝被视为( UTF-8 )。
等效于以下组:
(?>\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”。
问题内容: 这可能是一个非常简单的修复程序,但我无法弄清楚! 给定以下文本,我正在尝试连续匹配(最多)3个大写单词。 。比赛应包括所有3个单词。 此正则表达式将匹配前两个单词,但不匹配第三个单词(此处为demo): 这个正则表达式 将 匹配所有3个单词,但是我必须在之间复制/粘贴空格,然后它才能正常工作(此处演示): 所以我假设也许空白不被当作空白,而是换行符或类似字符,所以我尝试了这个(这里是演
我有一个包含和以及的字符串。 我们如何删除和,同时保持机智?
有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。
问题内容: 众所周知的事实是,现代正则表达式实现(最著名的是PCRE)与正则语法的经典示例{a n b n ; n> 0}(例如),使用此正则表达式(demo): 我的问题是:你能走多远?是否还可以使用PCRE 来解析上下文相关文法 {a n b n c n ; n> 0}(例如)? 问题答案: 受NullUserExceptions答案的启发(他已经删除了,因为它在一种情况下失败了),我认为自己
问题内容: 原始数据是: 我想匹配一条线,但是不能使用 但是,我可以使用match 。 我该如何搭配 问题答案: 默认情况下,和分别匹配输入的开始和结束。您需要使用启用多行模式,这会导致并匹配行的开始和结束: 演示: 产生以下输出: 编辑我 没有任何匹配的事实是因为默认情况下,和不匹配。如果您通过启用了DOT-ALL ,也使匹配了它们,那么您将看到整个输入字符串都被匹配了: 编辑二 在这种情况下,
我们得到了一些这样的内容: