Formatting regular expression code in the argument of \verb

regular expressionsverbatim

I have some difficulties with formatting regular expressions in the argument of \verb. Thank you for any help.

\documentclass[11pt]{book}
\usepackage[paperwidth=16cm, paperheight=24cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{caption}
\usepackage{mathtools}
\usepackage{makecell}
\usepackage{tabularx}
\usepackage{ragged2e}

\newcolumntype{L}[1]{>{\RaggedRight}X} % new

\input{structure.cls} %

\begin{document}
    \begin{table}[!htp]                 % new
    \small\linespread{0.84}\selectfont  % reduce interline spaces
    \setlength\tabcolsep{4pt}           % new
    \setcellgapes{2pt}                  % new
    \makegapedcells
        \begin{tabularx}{\linewidth}{|l|L{4cm}|l|} % new
            \hline
                \bfseries{Pour trouver} & \bfseries\makecell{RegEx à utiliser} & \bfseries{Exemple} \\
            \hline
                E-mail & \verb+[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]+ & [email protected] \\
            \hline
                Numéros de sécurité sociale américains & \verb+[^[a-z]+\$]+ & 513-84-7329 \\
            \hline
                Adresses IPV4 & \verb+[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]+ & 212.23.2.110\\
            \hline
                Dates au format MM/JJ/AAAA & \verb+[^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}\$]+ & Un seul mot non vide en minuscule \\
            \hline
                Numéros de cartes Mastercard & \verb+[^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}\$]+ & Exemple \\
            \hline
                Numéros de cartes Visa & \verb+[\b([4]\d{3}[\s]\d{4}[\s]\d{4}[\s]\d{4}|[4]\d{3}[-]\d{4}[-]\d{4}[-]\d{4}|[4]\d{3}[.]\d{4}[.]\d{4}[.]\d{4}|[4]\d{3}\d{4}\d{4}\d{4})\b]+ & Exemple \\
            \hline
                Numéros de cartes American Express & \verb+[^3[47][0-9]{13}\$]+ & Exemple \\
            \hline
                Codes ZIP US & \verb+[^((\d{5}-\d{4})|(\d{5})|([A-Z]\d[A-Z]\s\d[A-Z]\d))\$]+ & Exemple \\
            \hline
                Chemins d’accès à des fichiers & \verb+[\\[^\\]+\$]+\$]+ & Exemple \\
            \hline
                URL & \verb+[(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9\%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?<<>>""'']))]+ & Exemple
            \hline
        \end{tabularx}
        \caption{Exemples d'expressions régulières couramment utilisées}\label{tab:regexCourammentUtilisees}
    \end{table}
\end{document}

Header of Latex file

\documentclass[12pt]{book}
\usepackage[paperwidth=20cm, paperheight=29cm, margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{pifont} %Sutilise avec \usepackage{amsmath} pour la commande $\text{\ding{113}}  \Delta$
\usepackage{amsmath}
\usepackage{adjustbox}
\usepackage[activate={true,nocompatibility},final,tracking=true,kerning=true,spacing=true,factor=1100,stretch=10,shrink=10]{microtype}
\usepackage{multicol}
\usepackage{mathtools}
\usepackage{makecell}
\usepackage{tabularx}
\usepackage{listings}
\usepackage{ragged2e}

\usepackage[shortlabels]{enumitem} % Pour \begin{enumerate}a)
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{paracol} %Permet de diviser la page en 2 colonnes
\usepackage{titlesec} %Pour modifier le fomat du titre de section subparagraph
\usepackage{cancel} %Pour écrire chiffres barrés

\newcolumntype{L}[1]{>{\RaggedRight}X} % new
\newcolumntype{P}[1]{>{\RaggedRight}p{#1}}

\usepackage{pdflscape} % for 'landscape' env.
\usepackage{booktabs}  % for well-spaced horizontal rules
\usepackage{xurl}      % for '\path' macro, allow line breaks at arbitrary points

\titleformat*{\subparagraph}{\bfseries\itshape} %Modification du fomat du titre de section subparagraph

\definecolor{light-gray}{gray}{0.9}
\newcommand{\code}[1]{\colorbox{light-gray}{\texttt{#1}}}
\DeclareMathAlphabet\mathsf{OT1}{lcmss}{m}{n}

Best Answer

You can't use + inside the verbatim text delimited by `\verb+...+. As a delimiter you must use a character that doesn't appear in the verbatim text.

I suggest " that's unlikely to appear in regexes, but because of Murphy's law it does appear in the last one! (I used T.)

Also, you need to break lines. I'd make three equal size L columns (by the way, your definition requires an argument that's not used, so I removed it) and use fvextra features, see the code.

Of course, I'd also recommend to remove the vertical rules, but see below for a more appealing version.

\documentclass[11pt]{book}
\usepackage[paperwidth=16cm, paperheight=24cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{caption}
\usepackage{mathtools}
\usepackage{makecell}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{fvextra}

\newcolumntype{L}{>{\RaggedRight}X} % new

\begin{document}

\begin{table}[!htp] % new

\linespread{0.84}
\footnotesize
\setlength\tabcolsep{4pt}   % new
\setcellgapes{2pt}  % new
\makegapedcells
\fvset{breaklines,breakanywhere,breakanywheresymbolpre={}}

\begin{tabularx}{\linewidth}{|L|L|L|} % new
\hline
\bfseries Pour trouver & \bfseries RegEx à utiliser & \bfseries Exemple \\
\hline
E-mail & \Verb"[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]" & [email protected] \\
\hline
Numéros de sécurité sociale américains & \Verb"[^[a-z]+\$]" & 513-84-7329 \\
\hline
Adresses IPV4 & \Verb"[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]" & 212.23.2.110\\
\hline
Dates au format MM/JJ/AAAA & \Verb"[^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}\$]" & Un seul mot non vide en minuscule \\
\hline
Numéros de cartes Mastercard & \Verb"[^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}\$]" & Exemple \\
\hline
Numéros de cartes Visa & \Verb"[\b([4]\d{3}[\s]\d{4}[\s]\d{4}[\s]\d{4}|[4]\d{3}[-]\d{4}[-]\d{4}[-]\d{4}|[4]\d{3}[.]\d{4}[.]\d{4}[.]\d{4}|[4]\d{3}\d{4}\d{4}\d{4})\b]" & Exemple \\
\hline
Numéros de cartes American Express & \Verb"[^3[47][0-9]{13}\$]" & Exemple \\
\hline
Codes ZIP US & \Verb"[^((\d{5}-\d{4})|(\d{5})|([A-Z]\d[A-Z]\s\d[A-Z]\d))\$]" & Exemple \\
\hline
Chemins d’accès à des fichiers & \Verb"[\\[^\\]+\$]+\$]" & Exemple \\
\hline
URL & \Verb T[(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9\%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?<<>>""'']))]T & Exemple \\
\hline
\end{tabularx}

\caption{Exemples d'expressions régulières couramment utilisées}\label{tab:regexCourammentUtilisees}

\end{table}


\begin{table}[!htp] % new

\footnotesize\raggedright
\fvset{breaklines,breakanywhere,breakanywheresymbolpre={}}

\textbf{E-mail} \\
\Verb"[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]" \\
\texttt{[email protected]}

\medskip

\textbf{Numéros de sécurité sociale américains} \\
\Verb"[^[a-z]+\$]" \\
513-84-7329

\medskip

\textbf{Adresses IPV4} \\
\Verb"[^[\w\.=-]+@[\w\.-]+\.[\w]{2,3}\$]" \\
212.23.2.110

\medskip

\textbf{Dates au format MM/JJ/AAAA} \\
\Verb"[^\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}\$]" \\
Exemple

\medskip

\textbf{Numéros de cartes Mastercard} \\
\Verb"[^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}\$]" \\
Exemple

\medskip

\textbf{Numéros de cartes Visa} \\
\Verb"[\b([4]\d{3}[\s]\d{4}[\s]\d{4}[\s]\d{4}|[4]\d{3}[-]\d{4}[-]\d{4}[-]\d{4}|[4]\d{3}[.]\d{4}[.]\d{4}[.]\d{4}|[4]\d{3}\d{4}\d{4}\d{4})\b]" \\
Exemple

\medskip

\textbf{Numéros de cartes American Express} \\
\Verb"[^3[47][0-9]{13}\$]" \\
Exemple

\medskip

\textbf{Codes ZIP US} \\
\Verb"[^((\d{5}-\d{4})|(\d{5})|([A-Z]\d[A-Z]\s\d[A-Z]\d))\$]" \\
Exemple

\medskip

\textbf{Chemins d’accès à des fichiers} \\
\Verb"[\\[^\\]+\$]+\$]" \\
Exemple

\medskip

\textbf{URL} \\
\Verb T[(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9\%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?<<>>""'']))]T \\
Exemple

\caption{Exemples d'expressions régulières couramment utilisées}\label{tab:regexCourammentUtilisees}

\end{table}

\end{document}

enter image description here

enter image description here