[問題] 群組擷取的數量最多只能等於括號數目?

看板RegExp (正規表示式 Regular Expression)作者 (林小弟)時間14年前 (2010/08/20 15:06), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
我想要擷取如下的字串,抓出style集合內的數字,但集合內的元素數量 不是固定的而且要避免style={13,4,}這種不完全的形式: style={12113,124,1} 我使用了這樣的正規表示: /^style=\{(\d+)(,(\d+))*\}$/ -------- 這邊用了兩個括號是為了要讓逗號後面緊接數字 ,可是感覺很蠢,有其他指定順序的寫法嗎? 但似乎只能取得頭尾的元素,像上面那個例子,元素124就會抓不出來, 我猜測是被元素1蓋掉了,請問我應該怎麼修改才能抓取不定數量的群組呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.92.38 ※ 編輯: worldxxi 來自: 140.96.92.38 (08/20 15:24)

09/14 08:05, , 1F
用兩行? if ($str =~ /^style=\{(\d+(,\d+)*)\}$/) {
09/14 08:05, 1F

09/14 08:05, , 2F
@arr = $1 =~ /\d+/g; print "@arr" }
09/14 08:05, 2F

09/14 08:07, , 3F
(不過如果寫兩行,那//g的地方乾脆用split就好了)
09/14 08:07, 3F

09/22 21:45, , 4F
/^style=\{(\d+)(,(\d+))*,?\}$/
09/22 21:45, 4F
文章代碼(AID): #1CRYcD_B (RegExp)
文章代碼(AID): #1CRYcD_B (RegExp)