Regex 如何在Perl中从字符串中去掉方括号
我有一个值括在方括号内的变量。 例如:my$status=[计算版本=成功,清理过时进程=成功,更新版本=成功,邮件=空,发布操作=成功] 现在,我想去掉字符串上方的方括号。我试着低于正则表达式,但它不适用于方括号Regex 如何在Perl中从字符串中去掉方括号,regex,perl,Regex,Perl,我有一个值括在方括号内的变量。 例如:my$status=[计算版本=成功,清理过时进程=成功,更新版本=成功,邮件=空,发布操作=成功] 现在,我想去掉字符串上方的方括号。我试着低于正则表达式,但它不适用于方括号 $status =~ s/[{}]//g; #This is working for curly braces $status =~ s/[\[\]]//g; #is not working 你能帮忙吗 #!perl -w use strict; use warnings; my
$status =~ s/[{}]//g; #This is working for curly braces
$status =~ s/[\[\]]//g; #is not working
你能帮忙吗
#!perl -w
use strict;
use warnings;
my $status="[Calculate version=SUCCESS, cleanup stale processes=SUCCESS, Update version=SUCCESS, mail=null, Post Actions=SUCCESS]";
$status =~ s/[\[\]]//g;
print "status is : $status\n";
发件人:
[
在字符类中不是特殊的,除非它是POSIX字符类的开始(请参见下面的“POSIX字符类”),它通常不需要转义
]
通常是POSIX字符类的结尾(请参见下面的“POSIX字符类”),或者它表示括号内字符类的结尾。如果要在字符集中包含]
,通常必须对其进行转义
但是,如果]
是括号中字符类的第一个字符(如果第一个字符是插入符号,则为第二个字符),则它并不表示类的结尾(因为不能有空类),并且被视为无需转义即可匹配的字符集的一部分
所以
$status=~s/[]///g;
但是,
$status=~s/[\[\]]//g;
对我有用。不确定为什么它不适合你,除非你的真实代码中有其他东西没有显示出来。来自:
[
在字符类中不是特殊的,除非它是POSIX字符类的开始(请参见下面的“POSIX字符类”),它通常不需要转义
]
通常是POSIX字符类的结尾(请参见下面的“POSIX字符类”),或者它表示括号内字符类的结尾。如果要在字符集中包含]
,通常必须对其进行转义
但是,如果]
是括号中字符类的第一个字符(如果第一个字符是插入符号,则为第二个字符),则它并不表示类的结尾(因为不能有空类),并且被视为无需转义即可匹配的字符集的一部分
所以
$status=~s/[]///g;
但是,
$status=~s/[\[\]]//g;
对我有用。不确定为什么它不适合你,除非你的真实代码中有其他东西没有显示出来。你也可以使用:
您还可以使用:
谢谢,肖恩。我已经试过以上两种方法了。好像它在太空中破碎了。情况如下:Calculate@Ras编辑您的帖子以包含一个。更新了我的问题中的代码段,它就起作用了。这是我的错。好像我的剧本里有bug。谢谢你的帮助,谢谢肖恩。我已经试过以上两种方法了。好像它在太空中破碎了。情况如下:Calculate@Ras编辑您的帖子以包含一个。更新了我的问题中的代码段,它就起作用了。这是我的错。好像我的剧本里有bug。谢谢你的帮助。
my $status = "[Calculate version=SUCCESS, cleanup stale processes=SUCCESS, Update version=SUCCESS, mail=null, Post Actions=SUCCESS]";
$status =~ tr/[]//d;
print "$status\n";
# Calculate version=SUCCESS, cleanup stale processes=SUCCESS, Update version=SUCCESS, mail=null, Post Actions=SUCCESS