查看: 123|回复: 0
打印 上一主题 下一主题

[资料] EmEditor制作MDX词库用到的正则表达式技巧集

[复制链接]
  • TA的每日心情
    无聊
    2022-7-21 15:56
  • 签到天数: 216 天

    [LV.7]常住居民III

    25

    主题

    646

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    16738
    跳转到指定楼层
    1
    发表于 2021-2-8 18:29:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 wjl 于 2021-8-9 13:12 编辑

    正则学起来慢,几天不用很快就会忘掉。特此记录存档,以备后用。

    1. 如何将MdxSourceBuilder的格式2(若词条格式为'页码 + 分隔符 + 单个中或英关键词'的啰嗦行格式,则设为2)的文件转换为格式0(若词条格式为'一行页码 + 多行关键词(每行一个关键词)'的标准词条格式,则设为0)的文件?
    选中CSV格式的页码列,选择右键菜单中的 排序>按出现次数降序排序,记下页面单词数最多多少个,接下来替换操作时需要参考该数字。此处为14
    查找:^.+?\t(\d+)\t\d\n(.+?\t\1\t\d\n)*
    替换为:\1\n\0
    执行全部替换之前需要将 高级 中的 搜索正则表达式的附加行:设置为大于上面记录的最多单词数的数字。比如20

    然后删除页码:
    查找:^(.+?)\t\d+\t(\d+)$
    替换为:\1;\2;

    最终效果为

    1
    阿那贝律;1;
    暗典;1;
    暗韵;1;
    按断副词;2;
    按断句;2;
    2
    按断式;1;
    按断语气;2;
    按断助词;2;
    按语;2;

    替换为这种格式是为了方便后续对栏位进行相关操作。


    2.如何将页码变为四位数,位数不够的前面补0?
    查找:^(\d+)
    替换为:\J ("0000000000000000"+"\0").slice(-4)


    3.一个文本有多行,如何只选取奇数行或偶数行数据?
    选取奇数行
    查找:(^.*?$\n)(^.*?$\n)
    全部选择
    Ctrl+←
    Shift+End
    选取偶数行
    查找:(^.*?$\n)(^.*?$\n)
    全部选择
    Ctrl+←

    Shift+End

    评分

    1

    查看全部评分