Find URI in text: Difference between revisions

Content added Content deleted
(Pike)
(→‎{{header|Pike}}: remove legal characters if at the end)
Line 20: Line 20:


=={{header|Pike}}==
=={{header|Pike}}==
<lang Pike>string uritext = "this URI contains an illegal character, parentheses and a misplaced full stop:
<lang Pike>string uritext = "this URI contains an illegal character, parentheses and a misplaced full stop:" "http://en.wikipedia.org/wiki/Erich_Kästner_(camera_designer). (which is handled by http://mediawiki.org).";
http://en.wikipedia.org/wiki/Erich_Kästner_(camera_designer). (which is handled by http://mediawiki.org).";


array find_uris(string uritext)
array find_uris(string uritext)
Line 31: Line 30:
int prepos = sizeof(array_sscanf(reverse(uritext[pos-20..pos-1]), "%[a-zA-Z0-9+.-]%s")[0]);
int prepos = sizeof(array_sscanf(reverse(uritext[pos-20..pos-1]), "%[a-zA-Z0-9+.-]%s")[0]);
int postpos = sizeof(array_sscanf(uritext[pos+3..], "%[^ <>\"]%s")[0]);
int postpos = sizeof(array_sscanf(uritext[pos+3..], "%[^ <>\"]%s")[0]);

if ((<'.',',','?','!',';'>)[uritext[pos+postpos+2]])
postpos--;
if (uritext[pos-prepos-1]=='(' && uritext[pos+postpos+2]==')')
if (uritext[pos-prepos-1]=='(' && uritext[pos+postpos+2]==')')
postpos--;
postpos--;
uris+= ({ uritext[pos-prepos..pos+postpos+2] });
uris+= ({ uritext[pos-prepos..pos+postpos+2] });
}
}