Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
476 views18 pages

Using Regular Expressions in Borland Delphi - RM - 20040302

The document discusses using regular expressions in Borland Delphi. It describes what regular expressions are and common uses like validating data and extracting text. It then provides details on the syntax used in regular expressions, including characters, character classes, anchors, quantifiers and other elements. The document also explains how to wrap the VBScript 5.5 regular expression interfaces and the PCRE library to use regular expressions in Delphi applications.

Uploaded by

Eurasians
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
476 views18 pages

Using Regular Expressions in Borland Delphi - RM - 20040302

The document discusses using regular expressions in Borland Delphi. It describes what regular expressions are and common uses like validating data and extracting text. It then provides details on the syntax used in regular expressions, including characters, character classes, anchors, quantifiers and other elements. The document also explains how to wrap the VBScript 5.5 regular expression interfaces and the PCRE library to use regular expressions in Delphi applications.

Uploaded by

Eurasians
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Using Regular Expressions in Borland Delphi

Renato Mancuso - BUG UK Meeting

What Regular Expressions are

A Regular Expression is a string that describes a target text by defining the features that the target text must posses ex: the target text must start with a lower case letter, followed by 1 to 3 digits, and it must be terminated by a dot: ^[a- z]\d{1,3}.*\.$

Common Uses for Regular Expressions


P Validate data P Pull pieces of text out of larger blocks P Substitute new text for old text

Syntax

Characters and Metacharacters


P character shorthands: \a \n \r \t P octal escapes: \012 P hex and Unicode escapes: \x0A P control characters: \cH (backspace)

Character Classes and Class-like Construct


P normal classes: [...], [^...] P almost any character (dot): . P class shorthands: \d, \s, \w, \S, \D, \W P POSIX character classes: [[:alpha:]], [[:upper:]]

Anchors and Zerowidth Assertions


P start of line/string: ^, \A P end of line/string: $, \Z P start of match: \G P word boundary: \b, \B, \<, \> P lookahead: (?=...), (?!...) P lookbehind: (?<=...), (?<!...)

Comments and Mode Modifiers


P multi-line mode: m P single-line mode: s (DOTALL) P case insensitive mode: i P free spacing mode: x P inline mode modifiers: (?x), (?-x) P comments: (?#...), # (free spacing mode) P literal text spans: \Q...\E

Grouping, Capturing, Conditionals e Control


P capturing and grouping parentheses: (...) P back references: \1 \2 P grouping only parentheses: (?:...) P named captures: (?<name>...) [.NET], (?P<name>...) [PCRE] P atomic grouping: (?>...) P alternation: ...|... P conditional: (?if then|else) P greedy quantifiers: *, +, ?, {n,m} P lazy quantifiers: *?, +?, ??, {n,m}? P possessive quantifiers: *+, ++, ?+, {n,m}+

Using the VBScript 5.5 RegExp in Delphi

Microsoft VBScript 5.5 RegExp Interfaces


VBScript 1.0 interfaces interface IRegExp + + + + + + Pattern: WideString IgnoreCase: WordBool Global: WordBool Execute(WideString) : IDispatch Test(WideString) : WordBool Replace(WideString, WideString) : WideString interface IMatchCollection + + + Item[]: IDispatch Count: Integer _NewEnum: IUnknown + + + interface IMatch Value: WideString FirstIndex: Integer Length: Integer

interface IRegExp2 + + + + + + + Pattern: WideString IgnoreCase: WordBool Global: WordBool Multiline: WordBool Execute(WideString) : IDispatch Test(WideString) : WordBool Replace(WideString, WideString) : WideString interface IMatchCollection2 + + + Item[]: IDispatch Count: Integer _NewEnum: IUnknown + + + + interface IMatch2 Value: WideString FirstIndex: Integer Length: Integer SubMatches: IDispatch

interface ISubMatches realize + + + Item[]: OleVariant Count: Integer _NewEnum: IUnknown

coclass CoRegExp

+ + +

Execute(WideString) : IDispatch Test(WideString) : WordBool Replace(WideString, WideString) : WideString

Wrapping the VBScript 5.5 RegExp Interfaces

interface IRegex + + + + + + + + Pattern: W ideString IgnoreCase: Boolean MultiLine: Boolean Match(WideString) : Boolean Find(WideString) : IMatchCollection FindAll(WideString) : IMatchCollection Replace(WideString, WideString) : WideString ReplaceAll(WideString, WideString) : WideString interface IMatchCollection + + Count: Integer Item[]: IMatch + + + + interface IMatch Value: W ideString FirstIndex: Integer Length: Integer SubMatches: ISubMatches

interface ISubMatches + + Regex Count: Integer default Item[]: OleVariant

+ + + + + +

Create(W ideString, TRegexOptions) : IRegex Match(W ideString, W ideString) : Boolean Find(W ideString, W ideString) : IMatchCollection FindAll(W ideString, W ideString) : IMatchCollection Replace(W ideString, W ideString) : W ideString ReplaceAll(W ideString, W ideString) : W ideString

Using Pcre in Delphi

PCRE 4.4 Delphi wrapper

delphi interface IRegex + + + + + Match() : Boolean Matches() : IMatchCollection Grep() Split() : IStringCollection Replace() : string

delphi interface ICaptureGroupCollection + Count: Integer + default 0..* + + + 1..* +CaptureGroups[] Items[]

delphi interface ICaptureGroup Success: Boolean Value: string Index: Integer Length: Integer

delphi interface IRegexInfo + + CompiledSize: Integer CaptureCount: Integer + delphi interface IMatchCollection Count: Integer + default 0..* + + + Items[] delphi interface IMatch Success: Boolean Value: string Index: Integer Length: Integer

delphi interface IStringCollection + Count: Integer Strings[] default 0..*

string

References

Books
P Jeffrey E. F. Friedl - Mastering Regular Expressions (2nd edition) - OReilly P Tony Stubblebine - Regular Expression Pocket Reference - OReilly

Web

P http://www.pcre.org - PCRE P http://msdn.microsoft.com/library - VBScript RegExp docs & .NET Regex docs P http://www.boost.org/libs/regex/doc/index.html boost.regex documentation [C++](John Maddock) P http://www.renatomancuso.com - Delphi wrappers for PCRE and VBScript RegExp

[email protected]

You might also like