亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

根據空格和括號從字符串中提取單詞

根據空格和括號從字符串中提取單詞

Go
RISEBY 2023-07-10 14:41:11
我有一些字符串對應于由空格分隔的單詞,并且可以使用括號進行分組。我還有一個字符串數組,表示字符串中存在的組(不一定按相同的順序)。這是一個例子:myString = "zzz AND (aaa AND (bbb AND ccc OR ddd) ) OR eee AND \"fff  fff\" AND (ggg)" myGroups = ["(ggg)", "(aaa AND (bbb AND ccc OR ddd) )"]我想將該查詢拆分為不在引號內和不在括號內的空格。對前一個字符串進行分割的輸出如下:["zzz", "AND", "(aaa AND (bbb AND ccc OR ddd) )", "OR", "eee", "AND", "\"fff  fff\"", "AND", "(ggg)"]我成功地使用正則表達式分割了不在引號內的空格\s(?=(?:[^'"`]*(['"`])[^'"`]*\1)*[^'"`]*$)但我正在努力在其中添加群體的概念。筆記 :myString可能包含嵌套組,但我只想在外部組上拆分無需處理括號語法錯誤的情況
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

// PHP 

$re = '/(\((([^()]*|(?1))*)\))|(\\\\"[^\\\\]+\\\\"|[^\s]+)/m';

$str = 'zzz AND (aaa AND (bbb AND ccc OR ddd) ) OR eee AND \\"fff  fff\\" AND (ggg)';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

$result = array_column($matches, 0);

print_r($result);


// output

Array

(

    [0] => zzz

    [1] => AND

    [2] => (aaa AND (bbb AND ccc OR ddd) )

    [3] => OR

    [4] => eee

    [5] => AND

    [6] => \"fff  fff\"

    [7] => AND

    [8] => (ggg)

)


正則表達式演示


查看完整回答
反對 回復 2023-07-10
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

([\w]*)*?(?:(\([\w ]+(?2)*\))(?2)*)*?(\"[\w ]+\")?

演示


查看完整回答
反對 回復 2023-07-10
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號