成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Perl入門:貪婪量詞與非貪婪量詞

貪婪量詞與非貪婪量詞的概念在Perl中,有四個量詞:*、. ?這四個量詞都屬于貪婪量詞。所謂貪婪,就是盡可能多地匹配字符。然而,如果在這些貪婪量詞之后添加"?"符號,則它們將變成非貪婪量詞,即盡可能少

貪婪量詞與非貪婪量詞的概念

在Perl中,有四個量詞:*、. ?這四個量詞都屬于貪婪量詞。所謂貪婪,就是盡可能多地匹配字符。然而,如果在這些貪婪量詞之后添加"?"符號,則它們將變成非貪婪量詞,即盡可能少地匹配字符。

貪婪量詞的示例

首先,我們來看一個例子:

```

$str "hi,i am perl!";

print $str ~/i.p/;

```

在這段代碼中,使用了貪婪量詞模式/i.p/。它首先匹配到了字符"i",接著由于"."可以匹配任意字符,因此"i"之后的"i am perl!"都被". "吃掉了。然后它開始匹配到了"p",但由于"."最后一個字符是"!",所以不匹配。于是,"."將"!"排除掉,接著它又將最后一個字符變成了"l",繼續(xù)匹配,如此反復,直到找到"p"為止(或者無法找到指定的模式,匹配失?。?。

非貪婪量詞的示例

接下來我們看一個非貪婪量詞的例子,仍然使用相同的代碼:

```

$str "hi,i am perl!";

print $str ~/i.p/?

```

這段代碼的區(qū)別在于,在". "之后添加了"?"符號。它的工作順序如下:首先匹配到了"i",然后將字符交給". ",此時". "表示","號。然后再次嘗試匹配"p",但是逗號之后的字符是"i",不匹配。然后". "占據了"i",此時". "表示"i",接著再次嘗試匹配,由于后面是空格,依舊不匹配,再次占用空格,然后再次嘗試匹配,如此循環(huán),直到字符串結束。

貪婪量詞與非貪婪量詞的比較

通過以上兩個例子,可以看出貪婪量詞和非貪婪量詞的工作順序是不同的。在具體情況下,匹配效率也會有所差異。如果貪婪量詞將整個文章吞掉,而實際需要匹配的內容位于句首,那么使用非貪婪量詞可能更好。因此,在使用Perl進行字符串匹配時,需要根據具體情況選擇合適的量詞模式。

標簽: