keine angst vor regulären ausdrücken

14
bonn-to-code.net bonn-to-code.net Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail: [email protected]

Upload: leo-vaughan

Post on 03-Jan-2016

39 views

Category:

Documents


2 download

DESCRIPTION

Keine Angst vor Regulären Ausdrücken. 21.09.2010 Martin Winkler. EMail: [email protected]. Was ist ein Regulärer Ausdruck?. Eine „Schablone“. Character Classes. Character Classes (cont'd). Group. ( ). (aa)* (a|b). Named Group. (? ). (?abc). Quantifier. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Keine Angst vor Regulären Ausdrücken

bonn-to-code.netbonn-to-code.net

Keine Angst vor Regulären Ausdrücken

21.09.2010Martin Winkler

EMail: [email protected]

Page 2: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

Character ClassesAusdruck Bedeutung

. Beliebiger Character

[abcd] oder [a-zA-Z] Einer aus der Menge

[^abcd] Keiner aus der Menge

Page 4: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

Group( )

(?<theAbcGroup>abc)

Named Group

(aa)*

(a|b)

(?<name> )

Page 6: Keine Angst vor Regulären Ausdrücken

QuantifierAusdruck Bedeutung

* 0 oder mehr

+ 1 oder mehr

? 0 oder 1

Page 7: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

Alternative|

ab|cd ab oder cd

Page 9: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

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: Keine Angst vor Regulären Ausdrücken

Fallstricke #4\(* \)* stellt nicht sicher: gleiche Anzahl von ( und )

\(* \)* matched sowohl

( ),(( ))

Als auch

()) oder ))) usw.

Page 14: Keine Angst vor Regulären Ausdrücken

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