繁体   English   中英

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

[英]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,如果符号@ 为ON或第五索引之前存在的(假设字符串在索引1处开始),然后卸下的第二次数毕竟一切(包括@符号)@。

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

谢谢瓦伦。

您可以使用此正则表达式将要保留的零件捕获到第一组中:

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

该表达式匹配的字符串至少具有两个@符号,第一个@不会出现在开头的五个字符内。

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

演示

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

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

试试这个,用$1代替。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM