第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式匹配父組中的重復組

正則表達式匹配父組中的重復組

PHP
函數(shù)式編程 2022-07-09 16:53:16
我試圖匹配另一個組下的多個組。輸入182507 { 6661(T) }, 182514 { 5551(T), 5553(T), 5552(T) }輸出Full match: 182507 { 6661(T) }Group 1: 182507Group 2: 6661(T)Full match: 182514 { 5551(T), 5553(T), 5552(T) }Group 1: 182514Group 2: 5551(T)Group 3: 5553(T)Group 4: 5552(T)我嘗試了這種模式,但似乎沒有我例外的工作/([0-9]+)\s*\{\s*(\s*[0-9]+\s*\(\s*[A-Z]+\s*\))\s*?(?:,*\s*([0-9]+\s*\(\s*[A-Z]+\s*\))\s*)*+\s*\}+/
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

您的問題是重復捕獲組僅捕獲該組的最后一個匹配項,因此您的正則表達式不會捕獲5553(T)字符串的第二部分。使用兩步方法執(zhí)行此操作可能更簡單,首先匹配數(shù)字后面的部分 in {},然后將第二部分拆分為其組件:


$string = '182507 { 6661(T) }, 182514 { 5551(T), 5553(T), 5552(T) }';

preg_match_all('/(\d+)\s*{\s*([^}]+)\s*}/', $string, $matches);

$output = array();

foreach ($matches[1] as $key => $value) {

    $output[$key] = array_merge(array($value), preg_split('/\s*,\s*/', $matches[2][$key]));

}

print_r($output);

輸出:


Array

(

    [0] => Array

        (

            [0] => 182507

            [1] => 6661(T) 

        )

    [1] => Array

        (

            [0] => 182514

            [1] => 5551(T)

            [2] => 5553(T)

            [3] => 5552(T) 

        )

)


查看完整回答
反對 回復 2022-07-09
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號