【问题标题】:Remove everything after a 10 digit number regex删除 10 位数字正则表达式后的所有内容
【发布时间】:2017-08-29 13:54:00
【问题描述】:

我有数百万行,如下所示:

0032       0001        0020413300               0001           BLUE OVERCOAT               CC                 P

我之前通过以下方式设法删除了文本:

.*(?=\d{10})

要删除所有之后我正在尝试这个:

\d{10}.*

但它正在选择数字和之后的所有内容。我怎样才能留下号码并选择之后的所有内容?

【问题讨论】:

    标签: regex


    【解决方案1】:

    使用捕获组:

    (\d{10}).*
    

    并替换为$1。见the regex demo

    还可以考虑使用单词边界来匹配 10 位数字作为一个完整的单词:

    \b(\d{10})\b.*
    

    another regex demo

    如果您在 Notepad++ 中工作,您可以使用 \K 将匹配的文本放在其位置:\b\d{10}\b\K.* 并替换为空字符串。或者回顾一下:(?<=\b\d{10}\b).*.

    yet another demo

    【讨论】:

    • 那个still也选择了号码,我需要保留号码。编辑:K.* 有效,谢谢。
    • 所有的解决方案都会保留这个数字。答案中添加了演示。
    • 你可以用 .*(\d{10}).* 匹配所有(组前后)并用 $1 替换。
    • @mquantin:这将保留没有 10 位数字的行。如果任务是删除除 10 位数字之外的所有数字,我会建议另一种解决方案(特别是对于 Notepad++)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多