%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Java}
\chead{}
\ohead{http://kohnlehome.de/java/regex.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

%Bilder
\usepackage{graphicx}
\usepackage{graphics}

\pagestyle{scrheadings}

%\pdfpagewidth=\paperwidth
%\pdfpageheight=\paperheight

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Reguläre Ausdrücke - Regular Expressions
\end{center}

\section*{Begriff}
Ein Regulärer Ausdruck ist eine Zeichenkette, die eine Menge von Zeichenketten beschreibt.
\paragraph{Beispiel:} Der Reguläre Ausdruck \texttt{'a+'} beschreibt die Menge aller Zeichenketten, die aus einem oder mehreren \texttt{'a'} bestehen: \texttt{\{'a', 'aa', 'aaa', 'aaaa', ...\}}.

\section*{Java}
\begin{verbatim}
// Regulärer Ausdruck beschreibt unendliche Menge von Zeichenketten
String regex = "a+";
        
// Zeichenkette
String zeichenkette = "aaaaaaa";
        
// Prüfen, ob zeichenkette in Menge enthalten ist
boolean istEnthalten = Pattern.matches(regex, zeichenkette);

// oder boolean istEnthalten = zeichenkette.matches(regex);
\end{verbatim}

\section*{Regeln}
\subsection*{Quantifizierer}
\begin{tabular}{l l}
\texttt{X\{n,m\}} & X mindestens n-mal, höchstens m-mal\\
\texttt{X\{n,\}} & X mindestens n-mal\\
\texttt{X\{n\}} & X genau n-mal\\
\texttt{X?} & X null- oder einmal\\
\texttt{X*} & X null- oder mehrmal\\
\texttt{X+} & X mindestens einmal\\
\end{tabular}

\subsection*{Zeichenklassen}
\begin{tabular}{l l}
\texttt{[abc]} & a, b oder c\\
\texttt{[\^{}abc]} & weder a noch b noch c\\
\texttt{[a-zA-Z]} & alle Buchstaben von a bis z\\

\end{tabular}
\end{document}
