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

时间:2019-09-28 10:43:45

标签: regex notepad++

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

正则表达式正在使用:

@.*

示例数据:

Stack@overflow:Stack@overflow

所需的输出:

Stack@overflow:Stack

如您在输出中所看到的,包括@的第二次出现和之后的所有内容均已删除,但之前的文本保留。

我正在使用Notepad ++或任何允许使用Regex的文本编辑器。

3 个答案:

答案 0 :(得分:2)

模式@.*将匹配首次出现的@,然后匹配除换行符以外的所有字符,直到字符串的末尾,并且点也将匹配所有后面的@符号

如果:也应作为边界,则可以使用negated character class来匹配除@:以外的任何字符

[^@:]+@[^@:]+:[^@:]+
  • [^@:]+匹配除@:
  • 以外的任何字符
  • @字面上匹配
  • [^@:]+匹配除@:
  • 以外的任何字符
  • :字面上匹配
  • [^@:]+匹配除@:
  • 以外的任何字符

Regex demo

答案 1 :(得分:1)

您可以尝试

^[^@]*@[^@]*

enter image description here

Regex Demo

答案 2 :(得分:1)

  • Ctrl + H
  • 查找内容:^.+\K@.+$
  • 替换为:LEAVE EMPTY
  • 检查环绕
  • 检查正则表达式
  • 取消检查. matches newline
  • 全部替换

说明:

^               # 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

屏幕截图(之前):

enter image description here

屏幕截图(之后):

enter image description here