我試過從字符串中刪除重複項,"a","b","b","a","c"
取消結果後是"a","b","c",
。我已經實現了這一點,但我有一個疑問正則表達式替換的工作正則表達式替換如何在perl中工作?
use warnings;
use strict;
my $s = q+"a","b","b","a","c"+;
$s=~s/ ("\w"),?/($s=~s|($1)||g)?"$1,":"" /xge;
#^ ^
#| Consider this as s2
#Consider this as s1
print "\n$s\n\n";
s1
值包含字符串"a","b","b","a","c"
步驟1
置換後:
猜測,是什麼數據包含s1
以下變量"a","b","b","c"
或"a","b","b","a","c"
或,"b","b",,"c"
數據。
我已經運行與EVAL正則表達式分組
$s=~s/ ("\w"),? (?{print "$s\n"})/ ($s=~s|($1)||g)?"$1,":"" /xge;
結果是
"a","b","b","a","c"
,"b","b",,"c" #This is from after substitution
,,,,"c"
,,,,"c"
,,,,"c"
現在我dobut是s2
變量也$s
爲什麼它不與s1
連接在一起,這意味着在第二步驟結果應該是"a","b","b","c"
(所有字符串"a"
被替換爲空並且在$s
中添加了a
)。
編輯
從EVAL分組結果是(?{print $s})
"a","b","b","a","c"
,"b","b",,"c"
,,,,"c"
,,,,"c"
,,,,"c"
我印刷$s
變量這是給"a","b","c"
取代行之後,如何該輸出來了。?
這是相當困難的檢查正則表達式,並推斷它應該做的,也許將其分成多行,併爲每個區塊添加評論,也許其他人會努力投入一些時間來解決您的問題。 –
從我的角度來看,你的問題來自你的正則表達式中的空格。如果你嘗試'$ s =〜s /(「\ w」),? /_/G; 打印「\ nString用_:$ s替換\ $ 1後';',你會注意到你的字符串是不變的,但是如果你刪除空格,你將會有'$ s =〜s /(」\ w「) ,?/ _/g;'然後''1'將被'_'取代。 –
我認爲在're'模塊中有[一些選項](https://perldoc.perl.org/re.html#%27Debug%27-mode)用於調試。 –