国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

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

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

貪婪量詞的示例

首先,我們來(lái)看一個(gè)例子:

```

$str "hi,i am perl!";

print $str ~/i.p/;

```

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

非貪婪量詞的示例

接下來(lái)我們看一個(gè)非貪婪量詞的例子,仍然使用相同的代碼:

```

$str "hi,i am perl!";

print $str ~/i.p/?

```

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

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

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

標(biāo)簽: