查看: 1808|回复: 55
打印 上一主题 下一主题

[求助] 正则表达式请教

[复制链接]
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    跳转到指定楼层
    1
    发表于 2018-12-25 14:43:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 jonah_w 于 2018-12-25 14:47 编辑

    在制作Mac词典的过程碰到一个问题,就是有的词典的词条释义里用波浪线 ~ 代替了词条本身,我想重新用真正的词条替换掉波浪线 ~,不知道有什么好办法。

    词条内容的格式是类似这样的:
    1. <d:entry id="_38ja" d:title="xxx">
    2. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
    3. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
    4. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
    5. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>
    6. </d:entry>
    复制代码

    需要将每个entry里的 ~ 对应替换为当前词条entry 的 title值。
    不知道可以通过正则表达式实现吗,或者是否有更好的方法实现这个。


    这个是已经制作的Mac词典专辑。
    https://www.pdawiki.com/forum/fo ... ction=view&ctid=428

    如果问题解决,愿意赠送任一指定的Mac词典(公开的或者未公开的)。
    先行谢谢了。





  • TA的每日心情
    无聊
    2019-1-1 20:10
  • 签到天数: 31 天

    [LV.5]常住居民I

    0

    主题

    64

    回帖

    2495

    积分

    解元

    Rank: 5Rank: 5

    积分
    2495
    推荐
    发表于 2018-12-26 10:02:26 | 只看该作者
    这问题用 XPath 可以不用这么烧脑,用正则表达式则是把简单事情复杂化了,附 python 程序实现,依赖 lxml 库。

    1. #!/usr/bin/env python2
    2. # -*- coding: utf-8 -*-
    3. """
    4. File: replace_tilde_with_title.py
    5. Author: zzhirong
    6. Email: [email protected]
    7. Description: 替换 span 下的 ~ 为 d:entry 的 d:title 属性
    8. """

    9. from lxml import etree

    10. s = """<?xml version="1.0" encoding="UTF-8"?>
    11. <d:dictionary xmlns="http://www.w3.org/1999/xml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
    12. <d:entry id="_38ja" d:title="xxx">
    13. <d:index d:value="steal" d:title="steal"/><span class="hw">steal</span><br/>
    14. <span class="ex">~ a visit <span class="tag1">(an interview)</span> </span><span class="ex_c">测试<span class="tag1">(测试)</span></span>
    15. <span class="ex">~ a kiss </span><span class="ex_c">测试</span>
    16. <span class="ex">~ rides on the train </span><span class="ex_c">测试</span>
    17. </d:entry>
    18. </d:dictionary>
    19. """

    20. xml = etree.XML(s)
    21. D_NS = xml.nsmap["d"]
    22. XML_NS = xml.nsmap[None]

    23. for entry in xml.xpath("//d:entry", namespaces={"d": xml.nsmap["d"]}):
    24.     title = entry.get("{%s}title" % D_NS, "")
    25.     for span in entry.iterfind("./{%s}span" % XML_NS):
    26.         span.text = span.text.replace("~", title)
    27. print(etree.tostring(xml))
    复制代码

    replace_tilde_with_title.zip

    711 Bytes, 下载次数: 2, 下载积分: 米 -5 粒

  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    73

    主题

    1552

    回帖

    9万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    96973

    QQ 章笑傲江湖章灌水大神章推广专家

    推荐
    发表于 2018-12-26 06:37:07 | 只看该作者
    本帖最后由 VimVim 于 2018-12-26 11:59 编辑
    jonah_w 发表于 2018-12-26 00:04
    是正则的宏处理吗? 可不可以直接说下正则的思路,然后我试试在其他编辑器写出来,对vim尤其是宏这块完全 ...

    1、正则的思路二楼已经说的很清楚了,这里再补充一点详细信息:


    我只是照这个思路根据你的词典结构具体实现,并采用vim的替换功能,以及宏命令重复运行该替换操作。

    2、你只要:help usr_10即可获得关于本解决方案所需要的Vim基础知识

    3、补充方案一的具体思路:
    $2h:定位光标到词条定义中
    "tyi":将词条复制进寄存器t(寓意title)
    vit:选中当前位置所在标签所包围的内容
    :s/\~/^Rt/g:在上述选区范围内进行搜索替换,将所有的~替换为寄存器t中的title内容(其中^R是指Ctrl+r,并非简单字符)
    /<d:entry:搜索定位到下一个词条起始位置
    最后将上述指令放入寄存器中,并用宏命令@重复执行该寄存器的所有指令。






  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    推荐
     楼主| 发表于 2019-1-12 12:25:55 | 只看该作者
    本帖最后由 jonah_w 于 2019-1-12 12:27 编辑
    anyid999 发表于 2018-12-25 17:41
    新建个文件夹:
    把附件解压放入,
    将你的要修改的txt文件, 更名为 inp ...

    今天刚试了下这个脚本,发现有错误:
    1. Hello World!
    2. panic: runtime error: index out of range

    3. goroutine 1 [running]:
    4. main.aEreplace(0xc0000a6a11, 0x10, 0x290, 0x0)
    5.         D:/Xspace/Xmen/re.go:27 +0xed
    6. main.main()
    7.         D:/Xspace/Xmen/re.go:20 +0x20f
    复制代码


    不知道是不是我机器的问题。

    这是input.txt内容:(更新一个附件: input.txt (2.53 KB, 下载次数: 0)
    1. <?xml version="1.0" encoding="UTF-8"?><d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
    2.     <d:entry id="_2udw" d:title="roughshod"><d:index d:value="roughshod" d:title="roughshod"/><span class="hw">roughshod</span><br/><span class="tag3">a.</span><br/><span class="table"><span class="num">1.</span><span class="tag4"></span><span class="tag1">(马匹)</span>钉有防滑蹄铁的</span><span class="table"><span class="num">2.</span>残暴的;残忍的;无情的:</span><span class="ex">a tyrant's ~ rule </span><span class="ex_c">暴君的残暴统治</span><hr class="hr_1"/>ride ~ over / 残暴地<span class="tag1">(或盛气凌人地)</span>对待;对…横行霸道;对…不予同情:<br/><span class="ex">ride ~ over the people </span><span class="ex_c">骑在人民头上作威作福</span><span class="ex">ride ~ over the rights of the children </span><span class="ex_c">践踏儿童的权利</span><span class="ex">ride ~ over sb.'s feelings </span><span class="ex_c">伤害某人的感情</span><span class="ex">The boss rode ~ over the men when they asked for higher wages. </span><span class="ex_c">工人们要求加薪,老板不予理睬。</span></d:entry>
    3.     <d:entry id="_2u05" d:title="rookie"><d:index d:value="rookie" d:title="rookie"/><span class="hw">rookie</span><br/><span class="tag3">n.</span><br/><span class="tag4"></span><br/><span class="table"><span class="num">1.</span>新兵;生手,新手:</span><span class="ex">a police ~ </span><span class="ex_c">警察新手</span><span class="ex">a ~ star </span><span class="ex_c">新星</span><span class="table"><span class="num">2.</span><span class="tag1">(第一年参加联赛的职业球队的)</span>新队员,新秀</span><span class="tag2"><br/>[词典校勘] <br/></span> <span>rookie现在通用翻译为“新秀”。 另外,括号中说法有歧义。</span></d:entry>
    4.     <d:entry id="_owh" d:title="copybook"> <d:index d:value="copybook" d:title="copybook"/><span class="hw">copybook</span><br/> <span class="roma">Ⅰ</span> <span class="tag3">n.</span><br/> <span class="table"><span class="num">1.</span><span class="tag1">(附有规范供模仿的)</span>习字簿; 描红簿</span> <span class="table"><span class="num">2.</span><span class="tag1">(文件、信件、账目等的)</span>副本合订本, 副未册</span> <span class="roma">Ⅱ</span> <span class="tag3">a.</span><br/> <span class="table"><span class="num">1.</span>老一套的, 平庸的:</span> <span class="ex">a ~ maxim </span></d:entry> </d:dictionary>
    复制代码
  • TA的每日心情
    郁闷
    2018-5-17 09:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    56

    主题

    490

    回帖

    1万

    积分

    分区版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    12730

    翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

    2
    发表于 2018-12-25 14:50:07 | 只看该作者
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找不到为止。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    3
     楼主| 发表于 2018-12-25 14:59:33 | 只看该作者
    y8888 发表于 2018-12-25 14:50
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    这个词典词条不是一行,一个<span> 一行… 可能一个词条里有很多个<span>
    然后 ~ 可能有多个… 上面那个正则可以匹配到多个 ~ 吗?

    不过我先改成几个词条成一行,然后试试这个正则。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    4
     楼主| 发表于 2018-12-25 15:10:04 | 只看该作者
    y8888 发表于 2018-12-25 14:50
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    好像不可以,没有匹配到内容


  • TA的每日心情
    开心
    2020-2-19 01:15
  • 签到天数: 340 天

    [LV.8]以坛为家I

    42

    主题

    511

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    24928

    灌水大神章笑傲江湖章QQ 章推广专家

    5
    发表于 2018-12-25 15:19:37 | 只看该作者
    一个替换~的小工具
    https://www.pdawiki.com/forum/fo ... hread&tid=29088
    (出处: 掌上百科 - PDAWIKI)
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    6
     楼主| 发表于 2018-12-25 15:29:15 | 只看该作者
    dfsfd 发表于 2018-12-25 15:19
    一个替换~的小工具
    https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=29088
    (出处: 掌上百科 - ...

    我等下翻出我那台老Windows试试,感谢dfsfd提供信息
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    7
     楼主| 发表于 2018-12-25 15:37:03 | 只看该作者
    我天, ~ 还分全角半角…


    我再重新试试…
  • TA的每日心情

    前天 11:58
  • 签到天数: 1313 天

    [LV.10]以坛为家III

    2

    主题

    1395

    回帖

    4018

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4018
    8
    发表于 2018-12-25 15:50:52 | 只看该作者
    jonah_w 发表于 2018-12-25 14:59
    这个词典词条不是一行,一个 一行… 可能一个词条里有很多个
    然后 ~ 可能有多个… 上面那个正则可以匹配 ...

    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    多个~也没关系,可以执行多次查找替换
    全角半角~也没关系,用[~~]就好
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    9
     楼主| 发表于 2018-12-25 15:55:54 | 只看该作者
    niusmth 发表于 2018-12-25 15:50
    不是一行没关系,有的正则表达式引擎支持.也匹配回车换行
    多个~也没关系,可以执行多次查找替换
    全角半角 ...

    多行容易 这个entry的title匹配到下个entry的~去了… 很烦的
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    7

    主题

    385

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12324
    10
    发表于 2018-12-25 16:14:59 | 只看该作者
    这种情况, 写个替换程序最佳应用场景...
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    11
     楼主| 发表于 2018-12-25 16:15:52 | 只看该作者
    y8888 发表于 2018-12-25 14:50
    这种我以前也常换,首先一个词条做成一行,然后查找(.*)(真正的词条)(.*)~   替换成\1\2\3\2  一直替换到找 ...

    刚才 ~ 的半角全角弄错了… 又试了一下以后,发现这个正则可以匹配最后一个 ~
    多次执行替换可能最终可以解决。感谢y大这个思路,很赞。
    下一步就是将所有词条放在一行去。

    不知道有没有可以一次性匹配entry下所有~的方法。


  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    12
     楼主| 发表于 2018-12-25 16:20:14 | 只看该作者
    anyid999 发表于 2018-12-25 16:14
    这种情况, 写个替换程序最佳应用场景...

    自己写个程序? 最想通过一个通用的正则一步到位的解决,目前看… 难
  • TA的每日心情

    前天 11:58
  • 签到天数: 1313 天

    [LV.10]以坛为家III

    2

    主题

    1395

    回帖

    4018

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4018
    13
    发表于 2018-12-25 17:08:20 | 只看该作者
    jonah_w 发表于 2018-12-25 15:55
    多行容易 这个entry的title匹配到下个entry的~去了… 很烦的

    别用贪婪模式啊
    在</d:entry>前结束
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    7

    主题

    385

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12324
    14
    发表于 2018-12-25 17:22:26 | 只看该作者
    本帖最后由 anyid999 于 2018-12-25 17:25 编辑

    新建个文件夹:
    把附件解压(re.exe)放入,
    将你的要修改的txt文件, 更名为 input.txt,放入

    运行re.exe

    有问题问我.

    re.7z

    1.03 MB, 下载次数: 0, 下载积分: 米 -5 粒

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    15
     楼主| 发表于 2018-12-25 17:22:28 | 只看该作者
    niusmth 发表于 2018-12-25 17:08
    别用贪婪模式啊
    在前结束

    没用贪婪模式,因为下一个词条也有 </d:entry>
    如果这个词条没有 ~ 就会匹配到下一个词条,不管用不用贪婪模式
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    16
     楼主| 发表于 2018-12-25 17:27:37 | 只看该作者
    anyid999 发表于 2018-12-25 17:22
    新建个文件夹:
    把附件解压(re.exe)放入,
    将你的要修改的txt文件, 更名为 input.txt,放入

    我目前是mac环境,优先看看能不能在Mac上搞,不能再换吃灰的老windows…

    感谢提供资源。
  • TA的每日心情

    2019-11-22 21:06
  • 签到天数: 133 天

    [LV.7]常住居民III

    7

    主题

    385

    回帖

    1万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    12324
    17
    发表于 2018-12-25 17:41:38 | 只看该作者
    新建个文件夹:
    把附件解压放入,
    将你的要修改的txt文件, 更名为 input.txt,放入

    运行

    有问题问我.

    re mac.7z

    1.02 MB, 下载次数: 4, 下载积分: 米 -5 粒

  • TA的每日心情
    难过
    前天 23:08
  • 签到天数: 98 天

    [LV.6]常住居民II

    1

    主题

    151

    回帖

    3990

    积分

    贡士

    Rank: 6Rank: 6

    积分
    3990
    18
    发表于 2018-12-25 17:52:00 | 只看该作者
    感觉上,这不是应该正则处理的事情,先读 xml ,然后一个词条一个词条读取,用替换就可以了。
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    73

    主题

    1552

    回帖

    9万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    96973

    QQ 章笑傲江湖章灌水大神章推广专家

    19
    发表于 2018-12-25 17:54:45 | 只看该作者
    本帖最后由 VimVim 于 2018-12-25 18:11 编辑

    给你两个解决方案,均已测试通过!



    附件:上述截图用到的测试文件及Vim命令。
    前提:会简单使用Vim

    VimMacro.zip (64.16 KB, 下载次数: 1)

  • TA的每日心情
    开心
    昨天 19:36
  • 签到天数: 624 天

    [LV.9]以坛为家II

    539

    主题

    1981

    回帖

    5万

    积分

    超级版主

    Rank: 12Rank: 12Rank: 12

    积分
    53357

    翰林院专用章推广专家灌水大神章笑傲江湖章小蜜蜂章管理组专用章QQ 章

    20
    发表于 2018-12-25 19:46:47 | 只看该作者
    jonah_w 发表于 2018-12-25 06:37
    我天, ~ 还分全角半角…

    我的软件不行吗?
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    21
     楼主| 发表于 2018-12-25 19:55:01 | 只看该作者
    在尝试大家提供的各种方案中… 有些门槛好高,边摸索边学习


    非常感谢大家提供的方案。至少得弄通一个…

  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    250

    主题

    2966

    回帖

    53万

    积分

    状元

    吃水不忘挖井人

    Rank: 9Rank: 9Rank: 9

    积分
    531111

    灌水大神章笑傲江湖章推广专家QQ 章

    22
     楼主| 发表于 2018-12-25 19:58:50 | 只看该作者
    孤影 发表于 2018-12-25 19:46
    我的软件不行吗?

    各种方案一会儿都试试。
    感谢孤影大提供的工具。后面我都会反馈下哒。
  • TA的每日心情
    开心
    2019-5-28 07:39
  • 签到天数: 339 天

    [LV.8]以坛为家I

    87

    主题

    558

    回帖

    4万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    42284
    23
    发表于 2018-12-25 20:03:52 | 只看该作者
    本帖最后由 leescott 于 2018-12-25 20:15 编辑

    这种情况下,我喜欢用cnbook。
    复制原件到新建文本里面,替换\n为空。再把<d:entry替换为\n<d:entry,就成了一行。
    正则表达式替换那个词。比如,(\<d\:entry id\=\")(.*)(ja\" d\:title\=\")(.*)(\"\>\<d\:index)(.*)~(.*)$替换为\1\2\3\4\5\6\4\7同一个正则表达式,多点几次。直到文件没有那个符号(搜索不到为止)。
    最后,把该转行的地方,如第二步替换。
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    17

    主题

    3142

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    25289

    灌水大神章

    24
    发表于 2018-12-25 20:10:16 | 只看该作者
    孤影 发表于 2018-12-25 19:46
    我的软件不行吗?

    之前想要处理日汉双解词典里的全角“〜”有问题。
    不知是不是这个全角是日文特别符号?
    也许可以让使用者自行贴上要替代的符号会更好用些。
  • TA的每日心情
    开心
    昨天 19:36
  • 签到天数: 624 天

    [LV.9]以坛为家II

    539

    主题

    1981

    回帖

    5万

    积分

    超级版主

    Rank: 12Rank: 12Rank: 12

    积分
    53357

    翰林院专用章推广专家灌水大神章笑傲江湖章小蜜蜂章管理组专用章QQ 章

    25
    发表于 2018-12-25 20:11:34 | 只看该作者
    oversky 发表于 2018-12-25 11:10
    之前想要处理日汉双解词典里的全角“〜”有问题。
    不知是不是这个全角是日文特别符号?
    也许可以让使用者 ...

    软件项目文件丢失了,不过你可以通过编辑器把全角的~替换成半角的~