求教【正则表达式】:去掉电话号码间的连字符“-”

  • j
    jjxxin
    使用正则表达式,如何去掉电话号码间的连字符?比如“1-333-333-3333”替换为1333333333
    因为数字前的连字符不止出现在电话号码中,不能简单直接地把“-”替换了事。
    看了几天的学习资料了,查找会写了:1-\d{3}-\d{3}-\d{4}
    就是不会写替换后的语句

    求教!
  • a
    aghu
    内容随便贴到记事本查找替换即可
  • x
    xy455380512
    安卓有软件可以,叫 联系人号码修复工具生死有命,富贵在天~
  • j
    jjxxin
    回复3#xy455380512


    也想学习下正则表达式的用法。这两天一有时间就查下资料,居然还是没搞定
  • L
    Lyricz
    Editplus下的话可以这样:

    查找:([0-9])-([0-9][0-9][0-9])-([0-9][0-9][0-9])-([0-9][0-9][0-9][0-9])
    替换:\1\2\3\4
  • 双倍余额递减法
    同求怎么删去指定行(比如第192行)之前的所有数据?
  • i
    iszeds
    这个替换得支持变量才行吧,-需要依赖前后的数字才能查询出来,而前后的数字不固定,替换只能替换成固定内容
  • i
    iszeds
    楼主可以这样替换,如果样本如你4楼发的
    1、先把 - 直接替换掉
    2、把UTF8替换成UTF-8
    3、把QUOTEDPRINTABLE替换成QUOTED-PRINTABLE
  • C
    Cappuccin0
    (?![0-9])-(?=[0-9])
    把上面匹配到的替换为空即可。匹配的是两个数字之间的减号
  • s
    spellcrit
    很多引擎不支持这些复杂的语法的。

    简单点的就是([0-9]+)-[0-9] 替换成 \1 (有的是$1)
  • C
    Cappuccin0
    这个用批处理或者shell脚本之类的比较容易处理吧 正则反而可能麻烦得多
  • i
    iszeds
    高手,用断言 也可以
  • C
    Cappuccin0
    前后向匹配确实可能有些编辑器不支持 不过应该没有那么多吧。。。
  • s
    spellcrit
    editplus UE之类的都不支持吧。。
  • a
    azb1262006
    先用你的正则表达式把所有电话数字加符号提取出来 iOS fly ~
  • 双倍余额递减法
    对我也想到批处理比较简单因为正好也有几十个txt,但是不会写代码。。
  • C
    Cappuccin0
    不好意思 没怎么用过这俩我也不确定……以前常用的notepad++、notepad2和emeditor应该都是支持的,印象里emeditor应该是各种功能最好的(毕竟是收费的= =)
    确实如果考虑到引擎支持的问题,换个简洁点的方案可能更实际一点
  • j
    jjxxin
    感谢!达到目的了
  • j
    jjxxin
    这个把“UTF-8”里的“-”也算为要替换的内容了
  • j
    jjxxin
    感谢各位!达到目的,收工
  • C
    Cappuccin0
    假设文件叫a.txt, 跳过前面三十行(从第三十一行)开始的话,下面的命令就行了。输出重定向到文件就能写入新的文件,如果要把命令写到批处理(而非直接终端下面运行)的话%i要改成%%i。
    1. for /f "skip=30 delims=" %i in (a.txt) do @echo %i
    复制代码



    试了下应该是没错,太久没用了。。。
  • D
    D^D
    notepad++的确是支持的
  • 双倍余额递减法
    大神受我一拜
  • C
    Cappuccin0
    艾玛果然是写错了。。。应该是这个。。。。
    1. (?<=[0-9])-(?=[0-9])
    复制代码
  • j
    jjxxin
    简洁高效,佩服!!!
  • 五月天
    原来EditPlus还在啊,15年前我超爱用的工具
  • L
    Lyricz
    我已经用了十七八年了 iOS fly ~
  • 时间潜艇
    都不会可以用行编辑,直接删除-