我需要编写一个perl脚本来删除:和第一个字母
之间的所有特殊字符和空格$53:$? Abc
应该是
$53:Abc
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
使用look back / ahead来匹配开始/结束和不情愿的量词:
$var =~ s/(?<=:).*?(?=[a-zA-Z])//
答案 1 :(得分:0)
你可以尝试这样的事情。假设$str = "$53:$? Abc";
和$pattern
具有正确的模式,将返回冒号和字母之间的所有内容。
my $newStr = "";
if($str =~ $pattern)
{
$newStr = $`; //add the text to the left of the match
//loop through each character of $& (what the regex matched) and remove it
//from the string if it is a special character then do the below
$newStr += $&; //add the matching text without the special characters
$newStr += $'; //add the text to the right of the match
}
我在正则表达式上相当新,所以我无法想出正确的匹配模式,但我认为这至少可以帮助你开始,因为你似乎甚至没有起点。但是,使用正则表达式可能会有一种“更容易/更好”的方式,但这就是我要解决这个问题的方法。