删除:和第一个字母之间的所有特殊字符

时间:2013-12-17 03:52:50

标签: regex perl

我需要编写一个perl脚本来删除:和第一个字母

之间的所有特殊字符和空格
$53:$? Abc 

应该是

$53:Abc

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 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
}

我在正则表达式上相当新,所以我无法想出正确的匹配模式,但我认为这至少可以帮助你开始,因为你似乎甚至没有起点。但是,使用正则表达式可能会有一种“更容易/更好”的方式,但这就是我要解决这个问题的方法。