我想要在消息文本中匹配电报用户名并删除整行,我尝试了这个模式,但问题是它也匹配电子邮件:
.*(@(?=.{5,64}(?:\s|$))(?![_])(?!.*[_]{2})[a-zA-Z0-9_]+(?<![_.])).*
该模式应匹配所有这些行:
Hi @username how are you?
Hi @username.how are you?
@username.
而不应匹配此类电子邮件:
Hi email to something@domain.com
.*(@(?=.{5,64}(?:\s|$))(?![_])(?!.*[_]{2})[a-zA-Z0-9_]+(?<![_.])).*
该模式应匹配所有这些行:
Hi @username how are you?
Hi @username.how are you?
@username.
而不应匹配此类电子邮件:
Hi email to something@domain.com
.*[^a-zA-Z]@
... 但那远非完美。然后我查了一下 http://emailregex.com/,并想... 或许那会有所帮助?你或许可以先得到匹配结果,然后再使用另一个正则表达式来检查“用户名”是否真的是用户名,还是一个电子邮件地址。 - Reed