latex 正则表达式删除单词

latex 正则表达式删除单词

我正在使用该hyperref包,我想创建一个命令,用于\href删除其协议后写入 s 一次。例如,

  • https://google.com变得相关google.com
  • http://google.com变得相关google.com

通常为了做到这一点我可以写

\documentclass{article}
\usepackage{hyperref}

\begin{document}
\href{https://google.com}{google.com}
\end{document}

然而,如果我能创建一个像这样工作的命令,那就太理想了

\newcommand{\uri}[1]{
  \href{#1}{
    % somehow remove http[s]?:\/\/ from #1
  }
}

答案1

由于 URL 中没有特殊字符,因此非常简单:

\documentclass{article}
\usepackage{hyperref}

\newcommand{\rhref}[1]{%
  \href{#1}{\stripprotocol#1\stripprotocol}%
}
\def\stripprotocol#1//#2\stripprotocol{#2}

\begin{document}

\rhref{http://google.com}

\rhref{https://tex.stackexchange.com}

\end{document}

如果您坚持使用l3regex

\documentclass{article}
\usepackage{xparse}
\usepackage{hyperref}

\ExplSyntaxOn
\NewDocumentCommand{\rhref}{m}
 {
  \tl_set:Nn \l_tmpa_tl { #1 }
  \regex_replace_once:nnN { \A .*? // } { } \l_tmpa_tl
  \href{#1}{\l_tmpa_tl}
}
\ExplSyntaxOff

\begin{document}

\rhref{http://google.com}

\rhref{https://tex.stackexchange.com}

\end{document}

相关内容