例如
张三 | 1,2,3 |
---|---|
李四 | 4,5,6 |
首先通过筛选英文逗号,仅显示这些特征行,方便处理。
然后使用正则:
,
\n\t
把逗号替换为换行+页码:
张三 | 1 |
---|---|
2 | |
3 | |
李四 | 4 |
5 | |
6 |
现在要做的是把词头填进去。Emeditor自带快速填充功能,双击词头右下角就可以快速把词头填进去,。
但在这里显然不能这么做。还是得用正则。但正则的问题是怎么捕获词头放到下一行的tab前面。
^([一-龥]+)(.+?\d+?\n)(\t\d+)
\J "\0".replace(/\3/g,"\1\3")
因为这里词头对应三个页码,那么就需要再点一次替换全部。最终得到结果:
张三 | 1 |
---|---|
张三 | 2 |
张三 | 3 |
李四 | 4 |
李四 | 5 |
李四 | 6 |
不过现在试图再次运行这个正则出现了报错: | |
![image | 458x217](upload://wmHWxAatni1JihDLo6dKs9oNCl3.png) |
关闭之后Emeditor也出错了。重新打开之后就正常了。 |
楼下 freecomic101给出了另一个思路,那就是把带有多个页码的字符串首先切分为词头+tab+第一个页码,然后加入一个换行,再插入词头+tab+余下页码,让我们称之为字符串2。经过一次替换,词头和紧挨着的第一个页码被分割出来,而字符串2在下一次替换之中,又又会被分割到一个页码。每一次循环都为下一步循环做了铺垫,真是精妙。
(^.+?)\t([0-9]+),(.+?)\n
\1\t\2\n\1\t\3\n