簡體   English   中英

PHP正則表達式匹配所有大寫字母中的單詞或單詞組

[英]PHP Regex match word or group of words in all capital letters

如何使用正則表達式匹配所有大寫字母的單詞或單詞組?

我相信我已經解決了問題的一半,雖然這可能不是正確的方法。

我試圖在所有大寫字母中捕獲一個單詞,或者兩個或三個 - 基本上如果它們是連續的,我希望它們作為一個組被捕獲,而不是每個單詞本身。

例如:
“HAPPY BIRTHDAY TOMMY”不會匹配並返回[0] -> HAPPY, [1] -> BIRTHDAY, [2] -> TOMMY ,但是整個組,例如[0] -> HAPPY BIRTHDAY TOMMY

我在下面使用的代碼一起匹配“HAPPY BIRTHDAY”,或者只是“TOMMY”,但不是所有的東西。

[A-Z]{1,}\s[A-Z]{1,}|\b[A-Z]{1,}\b

你可以使用正則表達式:

(?=[A-Z])([A-Z\s]+)

看見

我確信我完全理解你需要什么,但為了分組,你必須使用括號()。 試試這個:

([A-Z]+)\b([A-Z]+)\b([A-Z]+)\b

這應該捕獲三個連續的全大寫單詞。

如果我理解正確,這應該是訣竅/([AZ]\\s?)+/ 這應該抓住像HAPPY BIRTHDAY TOMMY這樣的序列作為一套和生日快樂的tommy BOY作為兩組('HAPPY BIRTHDAY'和'BOY')。

那這個呢

$str = "My test sentence HAPPY BIRTHDAY TOMMY this is lower case an UPPERCASE more lowercase";
if (preg_match_all('/\\b(?=[A-Z])[A-Z ]+(?=\\W)/',$str,$match)) {                      
    var_dump($match[0]);
}

結果是

array(2){[0] => string(20)“HAPPY BIRTHDAY TOMMY” 1 => string(9)“UPPERCASE”}

最后使用前瞻確保最后不包含空格,因為如果使用單詞邊界並且后面有另一個單詞,則會發生這種情況。

在Regexr上看到它

暫無
暫無

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

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