我使用以下正则表达式扫描输入文本文件以获取有效的电子邮件.
[A-Za-z0-9!#$%&*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?
Run Code Online (Sandbox Code Playgroud)
现在我还需要在电子邮件地址中的"@"符号前将匹配限制为20个字符,但不知道如何操作.
PS.我正在使用Delphi XE2中的Perl正则表达式库(TPerlRegex).
你能帮帮我吗?
由于您的库应该与PERL兼容,因此它应该支持前瞻.这些方便了以确保模式中的几个"正交"限制:
(?=[^@]{1,20}@)[A-Za-z0-9!#$%&*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?
Run Code Online (Sandbox Code Playgroud)
只有@在不超过20个非@字符后才会匹配前瞻.但是,前瞻实际上并没有提升正则表达式引擎在主题字符串中的位置,因此在检查条件后,引擎仍处于电子邮件的开头(或者当前正在检查的任何位置)并且像以前一样继续你的模式.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |