D A T Y P I C
home
services
books
Overview
Table of Contents
Sample Chapter
Examples
1. Intro
2. Quick tour
3. Namespaces
4. Include/Import
5. Instances
6. Annotations
7. Element Decls
8. Attribute Decls
9. Simple types
10. Regexes
11. Union/List types
12. Built-in types
13. Complex types
14. Type derivation
15. Groups
16. Subst. groups
17. ID constraints
18. Redefines
19. DTDs topics
20. Naming
21. Extensibility
Errata
about
Definitive XML Schema

Definitive XML Schema

Priscilla Walmsley (pwalmsley@datypic.com)
1st edition (December 7, 2001)
Prentice Hall PTR; ISBN: 0130655678
Amazon.com
Buy at 30% off list price


Chapter 10: Regular expressions


Book Examples

Example 10-1. A simple type with a pattern

<xsd:simpleType name="ProdNumType">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="\d{3}-[A-Z]{2}|\d{7}"/>
  </xsd:restriction>
</xsd:simpleType>

Table 10-1. Using normal characters

Regular expression

Matching strings

Non-matching strings

a

a

b

a|b|c

a, b, c

abc


Table 10-3. Using character entity references

Regular expression

Matching strings

Non-matching strings

a&#x20;z

a z

az

a&#x20;*z

az, a z, a z, a z

a *z

PB&amp;J

PB&J

PBJ


Table 10-5. Using single-character escapes

Regular expression

Matching strings

Non-matching strings

1+2

12, 112, 1112

1+2

1\+2

1+2

12, 1\+2

1\++2

1+2, 1++2, 1+++2

12


Table 10-7. Using multi-character escapes

Regular expression

Matching strings

Non-matching strings

a\dz

a0z, a1z

az, adz, a12z

a.z

a1z, axz

az, axxz


Table 10-9. Using category escapes

Regular expression

Matching strings

Non-matching strings

\p{Lu}

A, B, C

a, b, c, 1, 2, 3

\P{Lu}

a, b, c, 1, 2, 3

A, B, C

\p{Nd}

1, 2, 3

a, b, c, A, B, C

\P{Nd}

a, b, c, A, B, C

1, 2, 3


Table 10-11. Using block escapes

Regular expression

Matching strings

Non-matching strings

\p{IsBasicLatin}

a, b, c

â, ß, ç

\P{IsBasicLatin}

â, ß, ç

a, b, c


Table 10-12. Specifying a list of characters

Regular expression

Matching strings

Non-matching strings

[abc]z

az, bz, cz

abz, z, abcz, abc

[\p{Lu}\d]z

Az, Bz, 1z, 2z

az, bz, cz, A1z


Table 10-13. Specifying a range

Regular expression

Matching strings

Non-matching strings

[a-f]z

az, fz

z, abz, gz, hz

[0-9a-fA-F]z

1z, az, Bz

z, gz, Gz, 1aBz

[&#x0020;-&#x007F;]z

az, bz, cz

âz


Table 10-14. Combining characters and ranges

Regular expression

Matching strings

Non-matching strings

[0-9pqr]z

1z, 2z, pz, rz

cz,dz, 0sz

[p-r\d]z

1z, 2z, pz, rz

cz,dz, 0sz


Table 10-15. Negating a character class expression

Regular expression

Matching strings

Non-matching strings

[^ab]z

cz, dz, 1z

az, bz

[^\d]z

az, bz, cz

1z, 2z, 3z

[^1-3a-c]z

dz, 4z

1z, az


Table 10-16. Subtracting from a character class expression

Regular expression

Matching strings

Non-matching strings

[a-z-[c]]z

az, dz, ez, zz

cz

[a-z-[cd]]z

az, ez, zz

cz, dz

[a-z-[c-e]]z

az, zz

cz, dz, ez, 1z

[^a-z-[123]]z

4z

az, 3z, zz


Table 10-17. Using parenthesized regular expressions

Regular expression

Matching strings

Non-matching strings

(a|b)z

az, bz

abz, z

(ab)*z

z, abz, ababz

az, bz, aabbz

(a+b)*z

z, abz, aabz, abaabz

az, abbz

([a-f]x)*z

z, axz, bxfxfxz

gxz, xz

(\db)*z

z, 1bz, 1b2bz

1z, bz


Table 10-19. Using quantifiers

Regular expression

Matching strings

Non-matching strings

abz

abz

az, abbz

ab?z

az, abz

abbz

ab*z

az, abz, abbz, abbbz, ...

a1z

ab+z

abz, abbz, abbbz, ...

az

ab{2}z

abbz

abz, abbbz

ab{2,}z

abbz, abbbz, abbbbz, ...

az, abz

ab{2,3}z

abbz, abbbz

az, abz, abbbbz

a[b-d]+z

abz, abdz, addbccdddz

az, aez, abez

a\p{Nd}+z

a1z, a11z, a234z

az, abcz

a(bc)+z

abcz, abcbcz, abcbcbcz, ...

az, abz