2011-06-28 27 views

回答

2
s/^(?!\^abc)/abc/ 

的伎倆,雖然

$_ = 'abc'.$_ if !/^\^abc/; 

可能會更清晰。


>perl -E"$_=$ARGV[0]; s/^(?!\^abc)/abc/; say;" "^abcdef" 
^abcdef 

>perl -E"$_=$ARGV[0]; s/^(?!\^abc)/abc/; say;" "defghi" 
abcdefghi 

>perl -E"$_=$ARGV[0]; $_ = 'abc'.$_ if !/^\^abc/; say;" "^abcdef" 
^abcdef 

>perl -E"$_=$ARGV[0]; $_ = 'abc'.$_ if !/^\^abc/; say;" "defghi" 
abcdefghi 
+0

@池上,怎麼做'?!\\'在這裏工作? – Learning

+0

@Learning,'(?!PAT)'匹配如果下面的內容不匹配'PAT'。 [perlre](http://perldoc.perl.org/perlre.html) – ikegami

+0

@ ikegami,剛剛嘗試過,似乎不工作。順便說一下,'(?!PAT)'是否捕獲? – Learning