View
112
Download
0
Category
Preview:
Citation preview
bonn-to-code.netbonn-to-code.net
Keine Angst vor Regulären Ausdrücken
21.09.2010Martin Winkler
EMail: martinwinkler82@web.de
Was ist ein Regulärer Ausdruck?•Eine „Schablone“
Schablone (RegEx)... ...passt auf
a* a, aa, aaa, ...
(aa)* aa, aaaa, ...
(a|b) a, b
Character ClassesAusdruck Bedeutung
. Beliebiger Character
[abcd] oder [a-zA-Z] Einer aus der Menge
[^abcd] Keiner aus der Menge
Character Classes (cont'd)Ausdruck Bedeutung
\s Whitespace Character
\S Kein Whitespace
\d Ziffer (0,…,9)
\D Keine Ziffer
\w Word-Character
\W Kein Word-Character
Group( )
(?<theAbcGroup>abc)
Named Group
(aa)*
(a|b)
(?<name> )
QuantifierAusdruck Bedeutung
* 0 oder mehr
+ 1 oder mehr
? 0 oder 1
AnchorAusdruck Bedeutung
\A Muss am String-Anfang matchen
\z ( kleines z ) Muss am String-Ende matchen
Bar\z findet einen Treffer bei „FooBar“
\ABar findet keinen Treffer bei „FooBar“
Alternative|
ab|cd ab oder cd
Was kann ich damit anfangen?
•Prüfen:Erfüllt ein string ein Muster?
•Extrahieren:Substrings rausgreifen und weiterverwenden
•Ersetzen:Ersatz verwendet das Ersetzte
• ...
Fallstricke #1A|AB vs AB|A
Pattern A|AB
Eingabe A Matched A
AB Matched A
Pattern AB|A
Eingabe A Matched A
AB Matched AB
Fallstricke #2Zeilenumbrüche und . (Wildcard)
Wildcard . matched per Default-Verhalten keine Zeilenumbrüche.
Sollen Zeilenumbrüche ebenfalls matchen, Singleline-Modus aktivieren:
Regex.Match( input, pattern, RegexOptions.Singleline );
Fallstricke #3B(?<A>A)?B ist nicht B(?<A>A?)B
In beiden Fällen ist A in BAB optional
Aber:
(...)?
Eingabe BB Group[„A“].Count ist 0
(...?)
Eingabe BB Group[„A“].Count ist 1
Fallstricke #4\(* \)* stellt nicht sicher: gleiche Anzahl von ( und )
\(* \)* matched sowohl
( ),(( ))
Als auch
()) oder ))) usw.
Wo schlage ich nach?Liste aller Sprachelementehttp://msdn.microsoft.com/en-us/library/az24scfc.aspx
Umfassende Erklärung von RegEx(auch lookahead/lookbehind assertions und back references)http://www.vsj.co.uk/articles/display.asp?id=789
RegEx Optionen http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions%28v=VS.100%29.aspxWas ist denn nun in \w enthalten?http://msdn.microsoft.com/en-us/library/20bw873z.aspx#WordCharacterund http://stackoverflow.com/questions/2998519/net-regex-what-is-the-word-character-wdazu: Unicode Character Database http://www.unicode.org/ucd/dazu: Liste der 'Punctuation, Connector' Categoryhttp://www.fileformat.info/info/unicode/category/Pc/list.htm
Recommended