作者vernc (cralvin)
看板RegExp
标题Re: [请问] regexp的replace?
时间Sat Oct 31 17:13:58 2020
[FL-clover、door、(天満春华)]返せ、かわり、○○で。[2007年、2009年](东方)
[FL-clover,door,(天満春华)]返せ、かわり、○○で。[2007年、2009年](东方)
如上例若限定只将第一个[]范围的n个、取代成, n不固定
^([^\n[]*?\[[^]]*?)、([^]]*\])
$1,$2
上面一次只能取代一个,请问要怎才能处理n个?
(?=\[*)(、)(?=[^]]*\])
这行也不对
那位大大能教一下吗
thx
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.242.18.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1604135640.A.506.html
1F:推 art1: 後面加上有任意字元与 [ 开头的条件应该就能只处理第一个[] 11/01 12:41
2F:→ art1: 应该说除了 [ 以外的任意字元,直到遇到第二个 [ 11/01 12:42
3F:→ art1: 像这样 、(?=[^]]*][^[]+\[) 11/01 12:44
试了下、上面会match第一行的全部五个、请问怎改会match前二个?
4F:推 art1: 、(?=[^]]*、[^]]*、[^]]*、[^]]*][^[]+\[) 11/02 06:41
5F:→ art1: 不过这部份只能手动增减去处理了,没办法动态处理 11/02 06:41
6F:→ art1: 上面那行只能处理五个中的前两个,五这个数字有变化的话,要 11/02 06:42
7F:→ art1: 手动增减 [^]]*、这组的数量,你看上面就有三组,五减三剩二 11/02 06:43
match 0个?
请问能改这行、把前&後定位好卡住在第一个[]范围内吗?
(?=\[*)(、)(?=[^]]*\])
※ 编辑: vernc (1.175.228.217 台湾), 11/04/2020 22:57:42
8F:推 art1: 你那一行依旧会找出第二组 [] 内的逗号,甚至连在 [] 以外的 11/04 23:36
9F:→ art1: 逗号都会被找到 11/04 23:36
10F:→ art1: match 0 个是因为你没把第一组 [] 内的逗号增加到超过三个 11/04 23:38
11F:→ art1: [FL-clover、door、(天満春华)FL-clover、door、(天満春华)] 11/04 23:38
12F:→ art1: 像这样第一组 [] 内有四个逗号,我那规则就能找到一个逗号 11/04 23:39
13F:→ art1: *找到第一个逗号 11/04 23:39
14F:→ art1: 如果有五个逗号,就能找出最前面的两个逗号 11/04 23:40
15F:→ art1: 应该说顿号才对 11/04 23:40
16F:推 art1: 误会你说的全部五个的意思了,不过我用 、(?=[^]]*][^[]+\[) 11/04 23:42
17F:→ art1: 是只找到第一组 [] 内的顿号,不会五个全部找到 11/04 23:43
wale,找到凶手了
我是用ultraedit测的,没加上断行第一行五个会全部找到
要断行才行
、(?=[^]]*][^\n[]+\[)
能将前面也定位吗?不然像下面就会出错
○、○[FL-clover、door、(天満春华)]返せ、かわり、○○で。[2007年、2009年]
○、○[FL-clover,door,(天満春华)]返せ、かわり、○○で。[2007年、2009年]
※ 编辑: vernc (1.175.100.247 台湾), 11/07/2020 01:59:21
18F:推 art1: 要排除 [ 前面的顿号,必须像上面提的手动控制顿号数量才能 11/07 20:52
19F:→ art1: 做到,而做到之後也必须取代功能够强大才有可能进行替换,也 11/07 20:54
20F:→ art1: 就是必须支援取代 group 1 或 group 2 的功能,但一般软体应 11/07 20:56
21F:→ art1: 该只会写到支援 group 0 吧? 11/07 20:56
22F:推 art1: (?<=\[)(?:.+?)(、)(?:.+?)(、)(?=[^]]*\][^\n[]+\[) 11/07 20:58
23F:→ art1: 像这样是两组顿号 (?:.+?)(、)(?:.+?)(、) 11/07 20:59
24F:→ art1: (?<=\[)(?:.+?)(、)(?=[^]]*\][^\n[]+\[) 这样就是一组 11/07 20:59
25F:→ art1: (?:.+?)(、) 11/07 21:00