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

6ie5vjzr  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(131)

我使用Notepad++和find and replace来删除一行中除了字符串找到的匹配项之外的所有内容。
举例来说:
第一行,这是样品。775 657 7576采样线1
第2行。第二条采样线。661-525-5366采样线2
第三行。第三行样本466.755.7888。地铁3号线
使用正则表达式\d{3}\D?\d{3}\D?\d{4}匹配上面的数字,并删除相关行中的所有其他内容,结果如下所示
电话:0775 - 657 - 7576
电话:661-525-5366
电话:466.755.7888

k4aesqcs

k4aesqcs1#

这其实很简单使用这个正则表达式:

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

字符串
工作原理:
此正则表达式尝试将电话号码与指定的正则表达式进行匹配。如果是,则将其从与\K的匹配中删除。如果没有,那么它只捕获一个字符与[\s\S](更好的版本.,因为它捕获换行符以及)。
使用此正则表达式查找其他所有内容并将其替换为空格。
Regex101

14ifxucb

14ifxucb2#

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

字符串
您可以使用它并替换为$1\1See demo.

5lhxktic

5lhxktic3#

这可以通过使用正则表达式find和replace中的分组概念来实现。
把你的线分成3部分,然后用你想要的部分替换它。

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

  • Part Before your pattern**(^.*)**
  • 您的匹配模式**(\d{3}\D?\d{3}\D?\d{4})**
  • 匹配模式**(.*)**后
    替换为:\2
  • 替换为第2组

如何做到这一点的快照

相关问题