【问题标题】:Notepad++ : Remove everything except digit and hyphen patternNotepad++:删除除数字和连字符模式之外的所有内容
【发布时间】:2020-04-05 22:58:37
【问题描述】:

Notepad++ : 我有一个电话号码文件,都是 123-123-1234 类型 我需要匹配模式 any3digitsDASHany3digitsDASHany4digits 并删除与此模式不匹配的任何内容

我有

  XL/XXL  1 
 349 "
" 
242 8 . . 
. 22140 
  089-247-3065

 XL/XXL  1 
 349 "
"  
206/1 .6 . .
. 30000
 092-273-6125

我想要

089-247-3065

092-273-6125

提前感谢您的帮助!

【问题讨论】:

  • 你能证明任何努力解决这个问题吗?应该如何做到这一点是否有任何限制?
  • 我搜索了大约 +20 个字符串或模式匹配的示例,但找不到任何可以完成我需要的内容,这基本上是删除文件中不是 xxx-xxx-xxxx 的所有内容(其中 x 是一个数字,'-' 也需要作为模式的一部分保留)
  • 同一条线路上会不会有超过 1 个电话号码?
  • 不,每行只有一个电话号码,并且电话号码没有任何其他文本/字符,它是纯3位连字符3位连字符4位格式

标签: windows replace find pattern-matching notepad++


【解决方案1】:
  • Ctrl+H
  • 查找内容:\G.*?(?<!\d)(\d{3}-\d{3}-\d{4}(?!\d)|\z)
  • 替换为:$1\n
  • 检查 环绕
  • CHECK 正则表达式
  • 检查 . matches newline
  • 全部替换

说明:

\G                  # restart from last match position
.*?                 # 0 or more any character
(?<!\d)             # negative lookbehind, make sure we haven't digit before
(                   # start group 1
  \d{3}-\d{3}-\d{4} # the string you're searching for
  (?!\d)            # negative lookahead, make sure we haven't digit after
 |                # OR
  \z                # end of file
)                   # end of group

屏幕截图(之前):

屏幕截图(之后):

【讨论】:

  • 你好托托,绝对完美。定义、要选择的应用程序/方法/选项、之前和之后的屏幕截图。经过测试,提供了我所希望的。非常非常感谢您的时间、技能和演示方法。谢谢你,椰子!
  • 请注意,如果电话号码前面有一个数字,则不会提取该电话号码。可能不是问题,但 OP 并未明确排除。
  • 很好 + 只是想知道 (?:\A|\G) 是否是多余的,因为 \G 已经匹配字符串的开头。
  • @bobblebubble:谢谢。你是对的,因为/s 标志。没有它,它是强制性的。
【解决方案2】:
grep -o '\b[[:digit:]]\{3\}-[[:digit:]]\{3\}-[[:digit:]]\{4\}\b' file
089-247-3065
092-273-6125

【讨论】:

  • 您使用哪种工具?我在这里演示grep
  • notepad++ 如果我的理解低于标准,我深表歉意。我认为我应该将您的命令放在搜索 - > Notepad++的替换区域
  • 你应该在开头提到这一点。但是对于windows10,grep应该是可用的
【解决方案3】:

替换这个正则表达式找到的内容:

^.*(\d{3}[-]\d{3}[-]\d{4}).*$

并替换为

\1

在 Notepad++ 中将隔离其线路中的所有电话号码,但保留没有电话号码的线路。这些可以通过替换这个正则表达式来删除:

^(?!\d{3}[-]\d{3}[-]\d{4}).*$

一无所有。

【讨论】:

  • 感谢 Scott,确实它删除了 xxx-xxx-xxxx 模式之前的所有内容,并且正如您所确认的,它保留了其他所有内容。有没有办法只匹配和保留模式,请删除所有不匹配的内容?
猜你喜欢
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多