使用正则表达式删除字符中间字符串中间的空格

时间:2019-04-02 20:31:49

标签: regex perl

我正在尝试从下面的字符串中捕获“某些公司名称”

@@VALUE= Some Company Name            @@

但在最后@@之前没有尾随空格。

我正在通过管道接收此数据,因此我试图在Perl中使用正则表达式替换该部分,因此最终结果将如下所示:

@@VALUE=Some Company Name@@

我可以将公司名称前的前导空格匹配,但我对公司名称的匹配始终为:

"Some Company Name            "

当前正在使用此正则表达式:

(\@\@VALUE=)(\s)([^@]*)

如果最后不使用@@,则删除尾随空格将很容易。

3 个答案:

答案 0 :(得分:1)

如果您要删除最后一个@@之前的所有空格,那只是

s/\s+\@\@$/\@\@/;

我不确定为什么您需要匹配其他任何内容。

答案 1 :(得分:0)

尝试使用正则表达式:\s+(?=@@$)

Regex Demo

Perl Demo

答案 2 :(得分:0)

或使用perl regex惰性模式

$s = '@@VALUE= Some Company Name       @@'
$s =~ s/@@VALUE=\s*(.+?)\s*@@\s*$/$1/
print $s