当我在其中编写带.
的正则表达式时,它与新行不匹配。
preg_match('/.*+?/') ...
我需要编写什么,以匹配所有可能的字符和新行?
答案 0 :(得分:22)
添加s
modifier,例如
'/./s'
答案 1 :(得分:2)
默认情况下,.
与新行不匹配。您可以使用s
修饰符更改此行为。
答案 2 :(得分:1)
.
与新行不匹配 - 这是故意的(尽管我不确定为什么)。您可以使用s
修饰符更改此行为,并使.
匹配所有字符,包括换行符。
示例:
$text = "Foobar\n123"; // This is the text to match
preg_match('/^Foo.*\d+$/', $text); // This is not a match; the s flag isn't used
preg_match('/^Foo.*\d+$/s', $text); // This is a match, since the s flag is used
答案 3 :(得分:0)
除了s修饰符,你应该考虑使用否定的字符类。而不是
#http://example\.org/.+/.+/.+#
你可以使用
#http://example\.org/[^/]+/[^/]+/[^/]+#
应该更快。
答案 4 :(得分:-1)
试试这个:
\r : carriage return
\n : new line
\w : even [a-zA-Z0-9_]
* : 0 or more. even : +?
$text = "a\nb\n123";
preg_match("/[\w\r\n]*/i", $text, $match);
print_r($match);
请参阅此列表: