Re: [請問] regexp的replace?

看板RegExp (正規表示式 Regular Expression)作者 (cralvin)時間4年前 (2020/10/31 17:14), 4年前編輯推噓6(6019)
留言25則, 1人參與, 4年前最新討論串2/2 (看更多)
[FL-clover、door、(天満春華)]返せ、かわり、○○で。[2007年、2009年](東方) [FL-clover,door,(天満春華)]返せ、かわり、○○で。[2007年、2009年](東方) 如上例若限定只將第一個[]範圍的n個、取代成, n不固定 ^([^\n[]*?\[[^]]*?)、([^]]*\]) $1,$2 上面一次只能取代一個,請問要怎才能處理n個? (?=\[*)(、)(?=[^]]*\]) 這行也不對 那位大大能教一下嗎 thx -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.242.18.104 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1604135640.A.506.html

11/01 12:41, 4年前 , 1F
後面加上有任意字元與 [ 開頭的條件應該就能只處理第一個[]
11/01 12:41, 1F

11/01 12:42, 4年前 , 2F
應該說除了 [ 以外的任意字元,直到遇到第二個 [
11/01 12:42, 2F

11/01 12:44, 4年前 , 3F
像這樣 、(?=[^]]*][^[]+\[)
11/01 12:44, 3F
試了下、上面會match第一行的全部五個、請問怎改會match前二個?

11/02 06:41, 4年前 , 4F
、(?=[^]]*、[^]]*、[^]]*、[^]]*][^[]+\[)
11/02 06:41, 4F

11/02 06:41, 4年前 , 5F
不過這部份只能手動增減去處理了,沒辦法動態處理
11/02 06:41, 5F

11/02 06:42, 4年前 , 6F
上面那行只能處理五個中的前兩個,五這個數字有變化的話,要
11/02 06:42, 6F

11/02 06:43, 4年前 , 7F
手動增減 [^]]*、這組的數量,你看上面就有三組,五減三剩二
11/02 06:43, 7F
match 0個? 請問能改這行、把前&後定位好卡住在第一個[]範圍內嗎? (?=\[*)(、)(?=[^]]*\]) ※ 編輯: vernc (1.175.228.217 臺灣), 11/04/2020 22:57:42

11/04 23:36, 4年前 , 8F
你那一行依舊會找出第二組 [] 內的逗號,甚至連在 [] 以外的
11/04 23:36, 8F

11/04 23:36, 4年前 , 9F
逗號都會被找到
11/04 23:36, 9F

11/04 23:38, 4年前 , 10F
match 0 個是因為你沒把第一組 [] 內的逗號增加到超過三個
11/04 23:38, 10F

11/04 23:38, 4年前 , 11F
[FL-clover、door、(天満春華)FL-clover、door、(天満春華)]
11/04 23:38, 11F

11/04 23:39, 4年前 , 12F
像這樣第一組 [] 內有四個逗號,我那規則就能找到一個逗號
11/04 23:39, 12F

11/04 23:39, 4年前 , 13F
*找到第一個逗號
11/04 23:39, 13F

11/04 23:40, 4年前 , 14F
如果有五個逗號,就能找出最前面的兩個逗號
11/04 23:40, 14F

11/04 23:40, 4年前 , 15F
應該說頓號才對
11/04 23:40, 15F

11/04 23:42, 4年前 , 16F
誤會你說的全部五個的意思了,不過我用 、(?=[^]]*][^[]+\[)
11/04 23:42, 16F

11/04 23:43, 4年前 , 17F
是只找到第一組 [] 內的頓號,不會五個全部找到
11/04 23:43, 17F
wale,找到兇手了 我是用ultraedit測的,沒加上斷行第一行五個會全部找到 要斷行才行 、(?=[^]]*][^\n[]+\[) 能將前面也定位嗎?不然像下面就會出錯 ○、○[FL-clover、door、(天満春華)]返せ、かわり、○○で。[2007年、2009年] ○、○[FL-clover,door,(天満春華)]返せ、かわり、○○で。[2007年、2009年] ※ 編輯: vernc (1.175.100.247 臺灣), 11/07/2020 01:59:21

11/07 20:52, 4年前 , 18F
要排除 [ 前面的頓號,必須像上面提的手動控制頓號數量才能
11/07 20:52, 18F

11/07 20:54, 4年前 , 19F
做到,而做到之後也必須取代功能夠強大才有可能進行替換,也
11/07 20:54, 19F

11/07 20:56, 4年前 , 20F
就是必須支援取代 group 1 或 group 2 的功能,但一般軟體應
11/07 20:56, 20F

11/07 20:56, 4年前 , 21F
該只會寫到支援 group 0 吧?
11/07 20:56, 21F

11/07 20:58, 4年前 , 22F
(?<=\[)(?:.+?)(、)(?:.+?)(、)(?=[^]]*\][^\n[]+\[)
11/07 20:58, 22F

11/07 20:59, 4年前 , 23F
像這樣是兩組頓號 (?:.+?)(、)(?:.+?)(、)
11/07 20:59, 23F

11/07 20:59, 4年前 , 24F
(?<=\[)(?:.+?)(、)(?=[^]]*\][^\n[]+\[) 這樣就是一組
11/07 20:59, 24F

11/07 21:00, 4年前 , 25F
(?:.+?)(、)
11/07 21:00, 25F
文章代碼(AID): #1VdIhOK6 (RegExp)
討論串 (同標題文章)
文章代碼(AID): #1VdIhOK6 (RegExp)