\def\scanurl#1%
  {\ifx#1\~%
     \flushurl\splitbefore\~%
   \else\ifx#1(% NEW
     \flushurl\splitbefore(% NEW
   \else\ifx#1)% NEW
     \flushurl\splitafter)% NEW
   \else\ifx#1\&%
     \flushurl\splitbefore\&%
   \else\ifx#1\%%
     \flushurl\splitbefore\%%
   \else\ifx#1\_%
     \flushurl\splitbefore\_%
   \else\if\noexpand#1\relax
     #1%
   \else\ifnum\catcode`#1=8
     \flushurl\splitbefore\_%
   \else\ifnum\catcode`#1=6
     \flushurl\splitbefore\#%
   \else\ifnum\catcode`#1=4
     \flushurl\splitbefore\&%
   \else\if#1\lettertilde
     \flushurl\splitbefore\~%
   \else\if#1\letterpercent
     \flushurl\splitbefore\%%
   \else\if#1\letterunderscore
     \flushurl\splitbefore\_%
   \else\if#1\letterquestionmark
     \flushurl\splitafter\letterquestionmark
   \else\if#1\letterat
     \flushurl\splitafter\letterat
   \else\if#1\letterslash
     \edef\savedurl{\savedurl\letterslash}%
   \else\if#1+%
     \flushurl\splitafter+%
   \else\if#1:%
     \flushurl\splitafter:%
   \else\if#1.%
     \flushurl\splitafter.%
   \else
     \ifx\savedurl\empty\else
       \splitbefore\savedurl
       \let\savedurl\empty
     \fi
     #1%
   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}


\def\gotoDOI#1{\hyphenatedurl#1}


a b c d e f g h i k l m n o p q r s t u v w x y z
a b c d e f g h i k l m n o p q r s t u v w x y z
a b c d e f g h i k l m n o p q r s t u v w x y z
a b c d e f g h i k l m n o p q r s t u v w x y z
a b c d e f g h i k l m n o p q r s t u v w x y z
a b c d e f g h i k l m n o p q r s t u v w x y z

\hskip11cm
\gotoDOI{10.1016/S0009-2614(01)01361-6}

\hskip11cm
\hyphenatedurl{10.1016/S0009-2614(01)01361-6}
\bye
