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

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

Java正則表達式:重復捕獲組

Java正則表達式:重復捕獲組

婷婷同學_ 2019-11-20 09:38:12
一個項目是用逗號分隔的一個或多個數字或字符字符串列表,例如"12""abc""12,abc,3"我正在嘗試匹配Java中零個或多個項目的包圍列表,例如"""(12)""(abc,12)""(abc,12),(30,asdf)""(qqq,pp),(abc,12),(30,asdf,2),"對于上一個示例,該示例應分別返回以下匹配組qqq,ppabc,1230,asdf,2我提出了以下(錯誤的)模式\((.+?)\)(?:,\((.+?)\))*最后一個示例僅與以下內容匹配qqq,pp30,asdf,2提示?謝謝
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

那就對了。Java正則表達式中不能有“可變”數量的捕獲組。您的圖案分為兩組:


\((.+?)\)(?:,\((.+?)\))*

  |___|        |___|

 group 1      group 2

每個組將包含該組最后匹配的內容。即,abc,12將被覆蓋30,asdf,2。


解決方案是使用一個表達式(類似\((.+?)\)),并用于matcher.find遍歷匹配項。


查看完整回答
反對 回復 2019-11-20
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

您可以使用([^,]+)in循環等正則表達式,也可以str.split(",")一次獲取所有元素。此版本:str.split("\\s*,\\s*")甚至允許空格。


查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 1422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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