如何在 Notepad++ 中替换字符串中除特定部分之外的所有部分?

如何在 Notepad++ 中替换字符串中除特定部分之外的所有部分?

我有一个包含如下内容的列表:

103238704-|--|-INEEDTHIS-|-r4Vp5iL2VbM=-|-娘家姓|--

在 Notepad++ 中有没有办法删除除 之外的所有内容INEEDTHIS

INEEDTHIS将是一个电子邮件地址。

答案1

然后你可以尝试这样的正则表达式:

[0-9]{9}\-\|\-\-\|\-(\w+)\-\|\-.+\|\-[\w\ ]+\|\-\-

这与两个字符串匹配。您必须用 替换$1,这将是您想要的值。无法在 Notepad++ 上测试,因为我没有它。但在我的编辑器 PhpStrom 上测试过。

更新:为了匹配电子邮件地址,最好使用这个:

[0-9]{9}\-\|\-\-\|\-([\w\@\.]+)\-\|\-.+\|\-[\w\ ]+\|\-\-

答案2

这个怎么样?

^(.*?)-\|-(.*?)-\|-(.*?)-\|-.*$

用。。。来代替

$3

这不对分隔符之间的子匹配的内容做出任何假设-|-

答案3

^(?:[^|]+\|-){2}([^|]+)-.+$

只要你的分隔符不变,这应该就可以正常工作。

  1. ^:让我们从头开始
  2. (?:[^|]+\|-): 匹配所有不是管道符号、管道符号和后面的连字符的内容(因为?:这是一个非捕获组)
  3. {2}:正好 2 次
  4. ([^|]+):这是你捕获的匹配项;匹配所有非管道符号
  5. -.+$: 匹配破折号和直到行尾的每个字符

适用于您提供的每个样本:

103238704-|--|-INEEDTHIS-|-r4Vp5iL2VbM=-|-娘家姓|-- 103238705-|--|-其他文本-|-BB4e6X+b2xLioxG6CatHBw==-|-男朋友|-- 103251697-|--|[电子邮件保护]|-ZI88rWBSuQPioxG6CatHBw==-|-暮光|-- 103238923-|--|[电子邮件保护]|-/lC7pSicTTk=-|-???|-- 103238922-|--|[电子邮件保护]|-78oCcp+nW7/ioxG6CatHBw==-|-|--

相关内容