2013-12-17 105 views
0

我需要寫一個perl腳本刪除之間的所有特殊字符和空格:和第一字母刪除所有特殊字符之間:和第一字母

$53:$? Abc 

應該一代產量

$53:Abc 

任何人可以幫助我出去了嗎?

+3

付出了一些努力,嘗試一些東西,在這裏發佈,然後我們會幫你糾正它。 –

+1

什麼是「特殊字符」? – ysth

回答

1

使用向後看/提前開始/結束之間的勉強量詞匹配:

$var =~ s/(?<=:).*?(?=[a-zA-Z])// 
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 
} 

我在正則表達式相當新的,所以我不能想出正確的匹配模式,但我想至少應該幫助您開始使用,因爲它看起來像你甚至沒有一個出發點。然而,使用正則表達式可能會有一種「更容易/更好」的方式,但這是我如何解決這個問題的方法。