正規表示式9

2013-08-26 14:05

$string = "門是開著的,燈是關著的"

看起來真是平淡無奇的一個句子。可是如果我們希望讓門關起來,並且打開燈,我們應該怎麼作呢?
根據我們剛剛學到的替換,這件事情好像很簡單,我們只要把門跟燈互相對調就好,可是應該怎麼作呢?如果我們這麼寫:

$string =~ s/門/燈/;

那整個字串就變成了「燈是開著的,燈是關著的」,那接下來我們要怎麼讓原來「燈」的位置變成「門」呢?所以這種作法似乎行不通,不過既然要交換這兩個字,我們是不是有容易的方法呢?利用暫存變數似乎是個可行的方法,就像這樣:

 


my $string = "門是開著的,燈是關著的";

print $string if ($string =~ s/(門)(.*)(,)(燈)(.*)/$3$2$1$4/);