我有一个来自原始数据的字符串。我不能保证可能会有或没有多余的逗号。我以为我可以这样删除它:
<link href='styles.css' rel='stylesheet'>
不幸的是,这不起作用。当然,我可以做一个循环来逐个检查字符串的最后一个字符,但是我想学习如何使用Regex反斜杠方法。
有人可以帮我吗?
答案 0 :(得分:3)
尝试一下
$value =~ s/,\s*$//;
模式,\s*$
匹配一个逗号(,
),后跟零个或多个空格字符(\s*
),然后是行/输入的结尾({{1} }。
答案 1 :(得分:3)
s/,//
删除第一个逗号。所以,
$value = reverse(reverse($value) =~ s/,//r);
答案 2 :(得分:2)
不确定为什么要在代码中指定/ r而不使用返回值。如果实际上您正在使用它,请将其重新添加。
s/.*\K,//
啊,如果您不希望有逗号结尾,这将不起作用;它将始终删除最后一个逗号。然后使用巴特的答案。
答案 3 :(得分:1)
可接受的答案将删除逗号,并在字符串末尾添加零个或多个空格字符。但是您问过要删除最后一个逗号。两者都与您的示例一致,但是如果您确实要删除最后一个逗号,则一种方法是:
"foo,bar,baz"
例如,这会将"foo,barbaz", and in your example
更改为to
“猫,狗,鱼,” reverse
“猫,狗,鱼”(保留尾随空格)。< / p>
choruba的答案中的{{1}}技巧也有效。
如果没有别的,这表明了准确的问题陈述的重要性。
答案 4 :(得分:1)
使用正面的眼光
$value =~ s/,(?=[^,]*\z)//;
答案 5 :(得分:0)
我建议使用以下模式:,*\s*$
。它匹配所有逗号(如果有)和所有空格(如果有)以及字符串的结尾。
完整示例:
use 5.18.2;
use strict ;
use warnings ;
use Data::Dumper;
my $data = "cat, dog, fish,,,,,,,,,,,,, ";
$data =~ s/,*\s*$// ;
print $data;