正则表达式:获取两个字符之间的字符串

问题描述 投票:0回答:2

我试图在字符串的两个字符@:之间提取一个字符串:

test23@server:/var/

所以,当我尝试做类似的事情,@([^.]*):甚至\@(\S+):我得到@server:

我只想要删除@:所以我只能得到server这个词。请帮忙!

regex perl
2个回答
1
投票

你只需要使用你刚刚构建的capturing group的引用者,或者你可以使用\K令牌。你不需要逃脱@角色和[^.]*意味着贪婪地匹配除了文字点.之外的所有东西,最好更改为[^:]+

@\K[^:]+

或更严格地说:

@\K[^:]++(?=:)

0
投票

试试(?<=@).*(?=:)。我正在使用积极的外观和积极的前瞻。

它将匹配以(但不包括)@字符开头并以(不包括):结尾的任何内容

有关详细信息,请参阅https://www.regular-expressions.info/lookaround.html

看看https://regex101.com/r/jIIB9Q/1的演示

© www.soinside.com 2019 - 2024. All rights reserved.