簡體   English   中英

如何在php中的字母塊中找到一組特定的字母

[英]how to find a specific set of letters in a block of letters in php

我需要從一組字母中提取一些單詞,

“gkshgksguvjvjvvjgvjgvjgvgdkgu 堆棧 溢出 ksbegkbeskbgksebgkbb STACK ghbhjjhvjvjvjvjgvgjvgjvgjvgjvjgvgjvgjvgjvjg 溢出 ksbbb vjvvvgjvgvgjvgjvgjvgjvvsdkgfkdgdgfdsgkhsdgdgfdsgffsdhkg”

  1. 我要提取“ 堆棧 ksbegkbeskbgksebgkbb 溢出
    根據以上文字,

  2. 堆疊溢出之間的字母數可以變化。

  3. 如果一組字母中有多個satckoverflow s,我想找到所有兩個字母之間都帶有字母的字母(並將它們添加到數組中)

    每次都可以更改STACK和OVERFLOW之間的字母數

$theBlob = "abcSTACKmmmOVERFLOWxyz...";
preg_match_all('/STACK(.*)OVERFLOW/U', $theBlob, $matches);
assert( $matches[0][0] === 'STACKmmmOVERFLOW' );
assert( $matches[1][0] === 'mmm' );

已更正:添加了U修飾符以使.*為非貪婪。

正則/STACK(.*)OVERFLOW/U具有U修飾符,以使.*為非貪婪,這意味着它應與最小字符數匹配(如果沒有U.*將為貪婪並盡可能匹配。 (直到最后一個“溢出”)。

$matches將是一個數組數組。 $matches[0]是所有完全匹配的數組。 $matches[1]包含第一組括號中所有子部分的數組。

看到http://phpfiddle.org/main/code/7cix-4y38

注意: U修飾符使所有中繼器變為非貪婪的。 如果要混合使用貪婪和非貪婪,可以執行.*? 使那只不貪心。 上面的正則表達式將變成/STACK(.*?)OVERFLOW/'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM