仅当字符出现在特定数量的字符之后才删除特定字符之后的所有内容的正则表达式

Regex for removing everything after a certain character only if the character occurs after a specific number of characters

我正在为此寻找一个简单的正则表达式,

示例 1:

n = 5

Input: abcde@varun@gmail.com

Output: abcde@varun

示例 2:

n = 5

Input: abcd@varun@gmail.com

Output: abcd@varun@gmail.com 

这意味着如果 n = 5 并且如果符号 @ NOT 出现在第 5 个索引上或之前(假设字符串从索引 1 开始,然后在 @.

第二次出现后删除所有内容(包括 @ 符号)

如果不满足上述规则,则保留字符串原样。

谢谢瓦伦。

^(?!(?:@|.@|.{2}@|.{3}@|.{4}@))(.*?@.*?)@.*$

通过 尝试 this.Replace。查看演示。

https://regex101.com/r/uC8uO6/7

您可以使用此正则表达式来捕获您希望保留在第一组中的部分:

(^[^@]{5,}@[^@]*)@

表达式匹配至少有两个 @ 符号的字符串,第一个 @ 不在前五个字符内。

这会捕获 abcde@varun,但不会捕获 abcd@varun,因为 @ 出现在前五个字符中。

Demo.

5 替换为 n 以根据需要更改前缀的长度。