是否可以仅在第二次出现特定符号时执行正则表达式?
正则表达式正在使用:
@.*
示例数据:
Stack@overflow:Stack@overflow
所需的输出:
Stack@overflow:Stack
如您在输出中所看到的,包括@
的第二次出现和之后的所有内容均已删除,但之前的文本保留。
我正在使用Notepad ++或任何允许使用Regex的文本编辑器。
答案 0 :(得分:2)
模式@.*
将匹配首次出现的@
,然后匹配除换行符以外的所有字符,直到字符串的末尾,并且点也将匹配所有后面的@
符号
如果:
也应作为边界,则可以使用negated character class来匹配除@
或:
以外的任何字符
[^@:]+@[^@:]+:[^@:]+
[^@:]+
匹配除@
或:
@
字面上匹配[^@:]+
匹配除@
或:
:
字面上匹配[^@:]+
匹配除@
或:
答案 1 :(得分:1)
答案 2 :(得分:1)
^.+\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
屏幕截图(之前):
屏幕截图(之后):