我创建了一个正则表达式来去除空格、制表符、换行等。
(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+
我的问题是它只匹配了一些空格和换行,而非全部。为什么会这样呢?
我尝试过:
(^[\r\n]*|[\r\n]+)[\s\t+]*[\r\n]+
但仍然似乎不能匹配多个空格
正则表达式测试演示
\s
为空即可。请参见regex101。(为了清晰起见,用*
进行替换)[\r\n]+
需要CR/LF和,如果该行不是由空行(^[\r\n]
匹配以换行符开头的行——即空行)前导的,则第一个[\r\n]+
也需要CR/LF。\s
。请查看Tushar对你问题的评论。 - SamWhans
(在PHP中是PCRE_DOTALL). - SamWhan.replace(/\s+/g, "")
将换行符替换为.replace(/\n+/g, "")
添加全局修饰符可在整个文本中进行替换。这将去除空格:
^(?:\s*)(\w+)$
使用多行和全局修饰符(gm)
如果这解决了您的问题,请将问题标记为已解决。
$input_lines = <<<EOD
test
aeee
eeeee
EOD;
$output = preg_replace('/(\s)*/', '$1', $input_lines);
var_dump($output);
结果:
string(16) "
test
aeee
eeeee"
如果我想要删除所有换行符
$output = preg_replace('/(\s)*/', '', $input_lines);
var_dump($output);
结果:
string(13) "testaeeeeeeee"
g
标志。另一个[\n\s\r]+
。 - Tushar\s
代表空白字符,具体包括哪些字符取决于正则表达式的类型。在本教程中讨论的所有类型中,它包括[ \t\r\n\f]
。也就是说:\s
匹配空格、制表符、换行符或换页符。” - Tushar'~^\s+~m'
。 - Wiktor Stribiżew