正则表达式删除新行和空格

Posted

技术标签:

【中文标题】正则表达式删除新行和空格【英文标题】:regex to remove new line and spaces 【发布时间】:2016-06-17 17:10:22 【问题描述】:

我创建了一个正则表达式来去除空格、制表符、换行符等。

(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+

我的问题是它匹配一些空格和一些新行,而不是全部。这是为什么呢?

我试过了:

(^[\r\n]*|[\r\n]+)[\s\t+]*[\r\n]+

但似乎仍然无法匹配多个空格

Regex tester demo

【问题讨论】:

Use g flag。另一个[\n\s\r]+ 我在哪里可以听你的雷鬼? @ChristianStewart 在 safari 上自动更正哈哈 @Tushar 也许也应该在其中包含 \t ? \s stands for "whitespace character" this actually includes, depends on the regex flavor. In all flavors discussed in this tutorial, it includes [ \t\r\n\f]. That is: \s matches a space, a tab, a line break, or a form feed. 【参考方案1】:

我不太确定你想在这里实现什么。但是,如果您,正如您在问题中所述,只需 ** 您所要做的就是将 \s 替换为空。见regex101。 (为了清楚起见,替换为*

您的正则表达式的问题是(除了它过于复杂;)结尾 [\r\n]+ 需要 CR/LF ,如果该行前面没有空行 ( ^[\r\n] 匹配以换行符开头的行 - 即空行),第一个中的 [\r\n]+ 也需要 CR/LF。

简而言之 - 它永远不会匹配两个连续的非空行。

问候。

【讨论】:

那么我需要在我的正则表达式中进行哪些更改 如第一段所述,您应该使用的只是\s。检查 Tushar 对您的问题的评论。 但它似乎与换行符不匹配 您必须使用单行修饰符sphp 中的 PCRE_DOTALL)。【参考方案2】:

这将消除空格:

^(?:\s*)(\w+)$  

带有多行和全局修饰符 (gm)

请,如果这解决了您的问号,请将问题标记为已解决。

【讨论】:

【参考方案3】:

尝试关注

.replace(/\s+/g, "") .replace(/\n+/g, "")

添加 global 将从任何地方替换。

【讨论】:

【参考方案4】:
$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"

【讨论】:

以上是关于正则表达式删除新行和空格的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 AS3使用正则表达式删除回车符和新行

AS3使用正则表达式删除回车符和新行

无法使用 Java 正则表达式匹配字符串的最后部分 [重复]

如何使用正则表达式删除尾随空格?

JavaScript 正则表达式 - 从开头和结尾删除空格

如何使用正则表达式删除尾随空格?