mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Fix extract_first_email_addr() to really return the first email
The use of find_all() in extract_email_addrs_vec() extracted occurrences to an intermediate set and thus lost any sense of ordering. This changes extract_email_addrs_vec() to use find_all_ordered() and return all occurrences of email addresses found in the argument, included duplicates, with their order of occurrence preserved.
This commit is contained in:
parent
a852ab4c39
commit
170752fa99
5 changed files with 47 additions and 4 deletions
|
@ -8,9 +8,9 @@ function extract_email_addrs_vec(str: string): string_vec
|
|||
{
|
||||
local addrs: vector of string = vector();
|
||||
|
||||
local raw_addrs = find_all(str, /(^|[<,:[:blank:]])[^<,:[:blank:]@]+"@"[^>,;[:blank:]]+([>,;[:blank:]]|$)/);
|
||||
for ( raw_addr in raw_addrs )
|
||||
addrs += gsub(raw_addr, /[<>,:;[:blank:]]/, "");
|
||||
local raw_addrs = find_all_ordered(str, /(^|[<,:[:blank:]])[^<,:[:blank:]@]+"@"[^>,;[:blank:]]+([>,;[:blank:]]|$)/);
|
||||
for ( i in raw_addrs )
|
||||
addrs += gsub(raw_addrs[i], /[<>,:;[:blank:]]/, "");
|
||||
|
||||
return addrs;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue