Regex 仅在第二次出现时使用正则表达式

Regex 仅在第二次出现时使用正则表达式,regex,notepad++,Regex,Notepad++,是否可以仅在第二次出现特定符号时执行我的正则表达式 正在使用的正则表达式: @.* 示例数据: Stack@overflow:Stack@overflow 期望输出: Stack@overflow:Stack 正如您在输出中看到的,包括第二次出现@之后的所有内容都已删除,但保留之前的文本除外 我正在使用记事本++或任何允许使用正则表达式的文本编辑器。模式@.*将匹配第一次出现的@,然后将匹配除换行符以外的任何字符,直到字符串结束,点也将匹配以下所有@符号 如果:也应该是边界,则可以使用来匹

是否可以仅在第二次出现特定符号时执行我的正则表达式

正在使用的正则表达式:

@.*
示例数据:

Stack@overflow:Stack@overflow
期望输出:

Stack@overflow:Stack
正如您在输出中看到的,包括第二次出现@之后的所有内容都已删除,但保留之前的文本除外

我正在使用记事本++或任何允许使用正则表达式的文本编辑器。

模式@.*将匹配第一次出现的@,然后将匹配除换行符以外的任何字符,直到字符串结束,点也将匹配以下所有@符号

如果:也应该是边界,则可以使用来匹配除@或:

[^@::+匹配除@或以外的任何字符: @逐字匹配 [^@::+匹配除@或以外的任何字符: :字面匹配 [^@::+匹配除@或以外的任何字符: 你可以试试

^[^@]*@[^@]*
Ctrl+H 找到什么:^+\K@.+$ 替换为:留空 检查环绕 检查正则表达式 取消选中。匹配新行 全部替换 说明:

鉴于:

给定示例的结果:

之前的屏幕截图:

以下操作后的屏幕截图:


在匹配所需数据方面非常有效。我只是不确定如何剪切/保存/提取保存的匹配项。这就是为什么我更喜欢在比赛结束后简单地处理数据。但是,尽管如此,正则表达式仍然有效,我将研究如何保存突出显示的文本。也许这个页面也可能是一个非常好的解决方案,非常感谢我的朋友。@stackandstack:不客气,很高兴它能帮上忙。如果您愿意,您可以投票:
^[^@]*@[^@]*
^               # beginning of line
  .+            # 1 or more any character but newline
  \K            # forget all we have seen until this position
  @             # literally @
  .+            # 1 or more any character but newline
$               # end of line
Stack@overflow:Stack@overflow
Stack@overflow:Stack