如何删除一行中除匹配的正则表达式之外的所有内容?

问题描述 投票:0回答:3

我正在使用 Notepad++ 并使用查找和替换来删除行中除字符串找到的匹配项之外的所有内容。

例如:

第 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

regex notepad++
3个回答
0
投票

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

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

工作原理:

此正则表达式尝试将电话号码与指定的正则表达式进行匹配。如果是这样,它将通过

\K
将其从匹配中删除。如果没有,那么它只会用
[\s\S]
捕获 1 个字符(
.
的更好版本,因为它也捕获换行符)。

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

正则表达式101


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

您可以使用它并替换为

$1
\1
参见演示。


0
投票

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

查找内容:

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

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

替换为:

\2

  • 将其替换为第二组

如何完成此操作的快照

© www.soinside.com 2019 - 2024. All rights reserved.