該訂單的Perl真的做什麼?
$variable =~ s/^(\d+)\b/$1/sg;
我能想到的唯一的事情就是$1
或$&
可能被再次使用,但它是緊跟。
$variable =~ s/\D//sg;
這兩條線合在一起,第一行是無意義的,可移動的嗎?看起來好像是這樣,但我在這個舊程序中多次看到它,並且想要確認。
該訂單的Perl真的做什麼?
$variable =~ s/^(\d+)\b/$1/sg;
我能想到的唯一的事情就是$1
或$&
可能被再次使用,但它是緊跟。
$variable =~ s/\D//sg;
這兩條線合在一起,第一行是無意義的,可移動的嗎?看起來好像是這樣,但我在這個舊程序中多次看到它,並且想要確認。
$variable =~ s/^(\d+)\b/$1/sg;
^
使得/g
修改沒用。.
使/s
修飾符無效,因爲它使.
也與換行符匹配。\b
和^
都是零寬度斷言,和捕獲組外的唯一的東西,這種替代將不會改變該變量。這個正則表達式所做的唯一的事情是將數字捕獲到$1
,如果它們被發現。
隨後的正則表達式
$variable =~ s/\D//sg;
將刪除所有非數字字符,使變量只是一個長的數字。如果一個人想在第一部分(第一正則表達式匹配)分開,這樣做的唯一方法是通過從第一正則表達式訪問$1
。
然而,在這種情況下,第一正則表達式將得到更好的簡寫:
$variable =~ /^(\d+)\b/;
如果捕獲應該被使用:
my ($num) = $variable =~ /^(\d+)\b/;
是「污染模式」中使用? (腳本調用與-T選項。)
也許它用來消毒(即解除污染)的用戶輸入。
沒,不習慣,但很有趣!我從來不知道這件事。 – 2012-02-08 16:03:58
+1這是一個可能的用途。很好的接收。 – TLP 2012-02-08 16:18:03