正则表达式删除新行和空格
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
【问题讨论】:
Useg
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 对您的问题的评论。
但它似乎与换行符不匹配
您必须使用单行修饰符s
(php 中的 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使用正则表达式删除回车符和新行