我有一个包含如下内容的列表:
103238704-|--|-INEEDTHIS-|-r4Vp5iL2VbM=-|-娘家姓|--
在 Notepad++ 中有没有办法删除除 之外的所有内容INEEDTHIS
?
INEEDTHIS
将是一个电子邮件地址。
答案1
然后你可以尝试这样的正则表达式:
[0-9]{9}\-\|\-\-\|\-(\w+)\-\|\-.+\|\-[\w\ ]+\|\-\-
这与两个字符串匹配。您必须用 替换$1
,这将是您想要的值。无法在 Notepad++ 上测试,因为我没有它。但在我的编辑器 PhpStrom 上测试过。
更新:为了匹配电子邮件地址,最好使用这个:
[0-9]{9}\-\|\-\-\|\-([\w\@\.]+)\-\|\-.+\|\-[\w\ ]+\|\-\-
答案2
这个怎么样?
^(.*?)-\|-(.*?)-\|-(.*?)-\|-.*$
用。。。来代替
$3
这不对分隔符之间的子匹配的内容做出任何假设-|-
。
答案3
^(?:[^|]+\|-){2}([^|]+)-.+$
只要你的分隔符不变,这应该就可以正常工作。
^
:让我们从头开始(?:[^|]+\|-)
: 匹配所有不是管道符号、管道符号和后面的连字符的内容(因为?:
这是一个非捕获组){2}
:正好 2 次([^|]+)
:这是你捕获的匹配项;匹配所有非管道符号-.+$
: 匹配破折号和直到行尾的每个字符
适用于您提供的每个样本:
103238704-|--|-INEEDTHIS-|-r4Vp5iL2VbM=-|-娘家姓|-- 103238705-|--|-其他文本-|-BB4e6X+b2xLioxG6CatHBw==-|-男朋友|-- 103251697-|--|[电子邮件保护]|-ZI88rWBSuQPioxG6CatHBw==-|-暮光|-- 103238923-|--|[电子邮件保护]|-/lC7pSicTTk=-|-???|-- 103238922-|--|[电子邮件保护]|-78oCcp+nW7/ioxG6CatHBw==-|-|--