140 likes | 235 Views
Keine Angst vor Regulären Ausdrücken. 21.09.2010 Martin Winkler. EMail: martinwinkler82@web.de. Was ist ein Regulärer Ausdruck?. Eine „Schablone“. Character Classes. Character Classes (cont'd). Group. ( ). (aa)* (a|b). Named Group. (?<name> ). (?<theAbcGroup>abc). Quantifier.
E N D
Keine Angst vor Regulären Ausdrücken 21.09.2010 Martin Winkler EMail:martinwinkler82@web.de
Was ist ein Regulärer Ausdruck? • Eine „Schablone“
Group ( ) (aa)* (a|b) Named Group (?<name> ) (?<theAbcGroup>abc)
Anchor 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 #1 A|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 #2 Zeilenumbrü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 #3 B(?<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 Sprachelemente http://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.aspx Was ist denn nun in \w enthalten? http://msdn.microsoft.com/en-us/library/20bw873z.aspx#WordCharacter und http://stackoverflow.com/questions/2998519/net-regex-what-is-the-word-character-w dazu: Unicode Character Database http://www.unicode.org/ucd/ dazu: Liste der 'Punctuation, Connector' Category http://www.fileformat.info/info/unicode/category/Pc/list.htm