my $book = Spreadsheet::Read->new();
my $book = ReadData
('D:\Profiles\jmahroof\Desktop\Scheduled_Build_Overview.xls');
my $cell = "CD7";
my $n = "1";
my $send = $book->[$n]{$cell};
$send =~ s/\(/ /g;
$send =~ s/\)//g;
我有上面的代码,它从一个 excel 文件中获取数据,然后从指定的单元格中挑选出文本并从字符串中删除括号。我需要能够删除括号内的所有内容,包括括号本身,同时保留文本的其余部分。字符串的格式如下所示:text(text)
$send =~ s/\(.*?\)//;
解释:
s/
搜索是否会\
转义接下来的括号,因为如果没有转义,它将被视为代码的一部分。(.*?\)
在这里,我们说我们正在寻找什么,我们使用非贪婪的 .*? 再次匹配最后一个括号之前的任何内容,最后一个括号被转义\
/
开始搜索的替换功能/
结束搜索和替换。
所以我们搜索 (*) 然后用空替换。
解释非贪婪与贪婪。
.* 贪婪将匹配直到最后)
找到
所以如果我们string((substring)end)
then s/(.*)//
从第一个(
到最后一个给)
你留下string
非贪婪不会,它会从第一个(
开始到第一个)
离开你,stringend)
所以它会很懒惰,只匹配你要求的东西,从(到)贪婪会匹配抓住一切,即使你有这个(string)(())((strings))()()strings)strings)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句