Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在记事本++;搜索具有特定域的电子邮件_Regex - Fatal编程技术网

Regex 如何在记事本++;搜索具有特定域的电子邮件

Regex 如何在记事本++;搜索具有特定域的电子邮件,regex,Regex,我正在尝试使用Notepad++删除以@domain2.serverdata.net结尾的电子邮件 下面是一个字符串示例: smtp:name@domain1.com;SMTP:name@domain2.com;smtp:name@domain2.serverdata.net;smtp:name@domain3.com;smtp:name_e4d1fe3d-e985-40d0-bc65-32c57c9b14d1@domain2.serverdata.net 我希望使用: );smtp:.*@do

我正在尝试使用Notepad++删除以@domain2.serverdata.net结尾的电子邮件

下面是一个字符串示例:

smtp:name@domain1.com;SMTP:name@domain2.com;smtp:name@domain2.serverdata.net;smtp:name@domain3.com;smtp:name_e4d1fe3d-e985-40d0-bc65-32c57c9b14d1@domain2.serverdata.net

我希望使用:

);smtp:.*@domain2.serverdata.net


但是它捕获了
SMTP:name@domain2.com
还有

试试正则表达式:
;?smtp:[\w.-]+?@domain2\.serverdata\.net


试试正则表达式:
;?smtp:[\w.-]+?@domain2\.serverdata\.net

试试这个:

smtp:[^@]+@domain2\.serverdata\.net(;)?
试试这个:

smtp:[^@]+@domain2\.serverdata\.net(;)?

正则表达式通常会捕获尽可能多的数据。例如:
START.*STOP
应用于以下文本:

STARTsghlegdSTOPfsgikbSTARTsvdinusSTOPwegtgw
将捕获此部分:

STARTsghlegdSTOPfsgikbSTARTsvdinusSTOPwegtgw
^------------------------------------^
在您的例子中,
*
捕获了所有内容,直到
@domain2.serverdata.net
的最后一个实例。您不想使用
(任何字符),您想使用“除“@”以外的任何字符”,它是这样写的:
[^@]

因此,您的完整正则表达式应该是
smtp:[^@]*@domain2\.serverdata\.net
。我还删除了开头的
正则表达式通常会捕获尽可能多的邮件地址。例如:
START.*STOP
应用于以下文本:

STARTsghlegdSTOPfsgikbSTARTsvdinusSTOPwegtgw
将捕获此部分:

STARTsghlegdSTOPfsgikbSTARTsvdinusSTOPwegtgw
^------------------------------------^
在您的例子中,
*
捕获了所有内容,直到
@domain2.serverdata.net
的最后一个实例。您不想使用
(任何字符),您想使用“除“@”以外的任何字符”,它是这样写的:
[^@]
。 因此,您的完整正则表达式应该是
smtp:[^@]*@domain2\.serverdata\.net
。我还删除了开头的
  • Ctrl+H
  • 查找内容:
    (?:\A|)smtp:[^@]*@domain2\.serverdata\.net
  • 替换为:
    留空
  • 检查环绕
  • 检查正则表达式
  • 全部替换
说明:

(?:\A |)#非捕获组,文件开头或分号,
这允许删除文件的第一封电子邮件
前面没有分号
smtp:#字面意思
[^@]+#1个或多个非@
@domain2\.serverdata\.net#字面意思
  • Ctrl+H
  • 查找内容:
    (?:\A|)smtp:[^@]*@domain2\.serverdata\.net
  • 替换为:
    留空
  • 检查环绕
  • 检查正则表达式
  • 全部替换
说明:

(?:\A |)#非捕获组,文件开头或分号,
这允许删除文件的第一封电子邮件
前面没有分号
smtp:#字面意思
[^@]+#1个或多个非@
@domain2\.serverdata\.net#字面意思


这个在regex101.com上运行,但是当我在Notepad++v7.5.4(32位)中测试时,它给了我一个错误“Find:Invalid regular expression”,问题是上下文是Notepad++,在前导“;”之后添加一个
*
这是最好的答案谢谢@Gus,我添加了一个
而不是
*
这一个在regex101.com上运行,但是当我在Notepad++v7.5.4(32位)中测试时,它给了我一个错误“Find:Invalid regular expression”,问题是上下文是Notepad++add a
*
,在前面的“;”这是最好的回答谢谢@Gus,如果你去掉首字母
,我添加了一个
,而不是
*
你可能会得到
在result.true中,我想是从;?如果你去掉首字母
,那就太好了你可能会得到
在result.true中,我想是从;?请注意,这在开始时与电子邮件地址不匹配。但现在您可能会得到
在结果中。这是怎么回事?你能举个例子吗?看看重置价值,但也许这对OP来说没问题。很好地发现了,再试试看,如果@domain2.serverdata.net电子邮件出现在列表的最后一位,它仍然有一个缺点,即在后面留下一个分号,但可能对他来说已经足够好了。请注意,这将与开始时的电子邮件地址不匹配。但现在您可能会得到
在结果中。这是怎么回事?你能举个例子吗?看看替换值,但也许这对OP来说没问题。很好地发现,再试试看,它仍然有一个缺点,就是在@domain2.serverdata.net电子邮件出现在列表的最后一个位置时,它会留下一个分号,但可能对他来说已经足够好了