有人可以帮我删除除匹配的正则表达式之外的所有内容吗?

时间:2015-10-06 18:57:37

标签: regex notepad++

我正在使用notepad ++并使用find和replace删除一行中的所有内容,除了我的字符串找到的匹配项。

例如

第1行。这是样本。 775 657 7576样本行1

第2行。第二个样本行。 661-525-5366样本第2行

第3行。第三行样本466.755.7888。第3行

使用正则表达式\ d {3} \ D?\ d {3} \ D?\ d {4}匹配上述数字并删除其相关行中的所有其他内容,从而使其看起来像这样

第1行.775 657 7576

第2行.661-525-5366

第3行.466.755.7888

请帮忙

3 个答案:

答案 0 :(得分:0)

实际上,这很容易。只需使用这个正则表达式:

(?>\d{3}\D?\d{3}\D?\d{4}\K|[\s\S])

工作原理:

此正则表达式尝试将电话号码与指示的正则表达式匹配。如果是,则会将其从与\K的匹配中删除。如果它没有,则它只会使用[\s\S].的更好版本捕获1个字符,因为它也会捕获换行符。)

使用此正则表达式查找其他所有内容并将其替换为空格。

Regex101

答案 1 :(得分:0)

 ^.*?\b(\d{3}\D?\d{3}\D?\d{4})\b.*$

您可以使用此选项并替换为$1\1See demo.

答案 2 :(得分:0)

这可以使用正则表达式查找和替换中的分组概念来完成 将您的线分成3个部分,并将其替换为您想要的部分。

查找内容: (^.*)(\d{3}\D?\d{3}\D?\d{4})(.*)

  • 在您的模式 (^.*)
  • 之前的部分
  • 您的匹配模式 (\d{3}\D?\d{3}\D?\d{4})
  • 匹配模式后 (.*)

替换为: \2

  • 将其替换为第二组

快照如何做到这一点 enter image description here