Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler...
-
Upload
rainer-gettig -
Category
Documents
-
view
111 -
download
0
Transcript of Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler...
![Page 1: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/1.jpg)
bonn-to-code.netbonn-to-code.net
Keine Angst vor Regulären Ausdrücken
21.09.2010Martin Winkler
EMail: [email protected]
![Page 2: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/2.jpg)
Was ist ein Regulärer Ausdruck?•Eine „Schablone“
Schablone (RegEx)... ...passt auf
a* a, aa, aaa, ...
(aa)* aa, aaaa, ...
(a|b) a, b
![Page 3: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/3.jpg)
Character ClassesAusdruck Bedeutung
. Beliebiger Character
[abcd] oder [a-zA-Z] Einer aus der Menge
[^abcd] Keiner aus der Menge
![Page 4: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/4.jpg)
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
![Page 5: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/5.jpg)
Group( )
(?<theAbcGroup>abc)
Named Group
(aa)*
(a|b)
(?<name> )
![Page 6: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/6.jpg)
QuantifierAusdruck Bedeutung
* 0 oder mehr
+ 1 oder mehr
? 0 oder 1
![Page 7: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/7.jpg)
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“
![Page 8: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/8.jpg)
Alternative|
ab|cd ab oder cd
![Page 9: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/9.jpg)
Was kann ich damit anfangen?
•Prüfen:Erfüllt ein string ein Muster?
•Extrahieren:Substrings rausgreifen und weiterverwenden
•Ersetzen:Ersatz verwendet das Ersetzte
• ...
![Page 10: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/10.jpg)
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
![Page 11: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/11.jpg)
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 );
![Page 12: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/12.jpg)
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
![Page 13: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/13.jpg)
Fallstricke #4\(* \)* stellt nicht sicher: gleiche Anzahl von ( und )
\(* \)* matched sowohl
( ),(( ))
Als auch
()) oder ))) usw.
![Page 14: Bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.demartinwinkler82@web.de.](https://reader035.fdocument.pub/reader035/viewer/2022081514/55204d6249795902118b765c/html5/thumbnails/14.jpg)
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