我应该怎样编写一个正则表达式,能够匹配除了换行符以外的任何字符。这种情况下,我需要排除换行符,因为它并不是我想要的内容。
"/(.*)/"
.
在不使用s
修饰符的情况下无法匹配换行符。>>> preg_match("/./", "\n")
0
>>> preg_match("/./s", "\n")
1
下面的正则表达式应该匹配除换行符以外的任何字符
/[^\n]+/
#!/usr/bin/env php
<?php
$test = "Some\ntest\nstring";
// Echos just "Some"
preg_match('/(.*)/', $test, $m);
echo "First test: ".$m[0]."\n";
// Echos the whole string.
preg_match('/(.*)/s', $test, $m);
echo "Second test: ".$m[0]."\n";
所以我不知道你的程序出了什么问题,但它不是正则表达式的问题(除非你在实际应用中使用了/s
修饰符)。
默认行为不应匹配换行符。因为“s”修饰符用于使点匹配所有字符,包括换行符。也许你可以提供一个示例看看?
这很奇怪,因为默认情况下点(.)不接受换行符。很可能你有一个"\r"(回车)字符,所以你需要同时消除它们:/[^\r\n]/
啊,原来你在使用/s。