Using Flags

Three XQuery functions use regular expressions: matches, replace, and tokenize. Each of these functions accepts a $flags argument that allows for additional options in the interpretation of the regular expression, such as multi-line processing and case insensitivity. Options are indicated by single letters; the $flags argument is a string that can include any of the valid letters in any order, and duplicates are allowed.

The $flags argument allows four options:

s

The letter s indicates dot-all mode, which affects the period wildcard (.). (This is known as single-line mode in Perl.) This means that the period wildcard matches any character whatsoever, including the line feed (#xA) character. If the letter s is not specified, the period wildcard matches any character except the line feed (#xA) character.

m

The letter m indicates multi-line mode, which affects anchors. In multi-line mode, the ^ and $ characters match the beginning and end of a line, as well as the beginning and end of the whole string.

i

The letter i indicates case-insensitive mode. This means that matching does not distinguish between normal characters that are case variants of each other, as defined by Unicode. For example, in case-insensitive mode, [a-z] matches the lowercase letters a through z, uppercase letters A through Z, and a few other characters such as a Kelvin sign. The meaning of category escapes such as p{Lu} is not affected.

x

The letter x indicates that whitespace characters within regular expressions should be ignored. This is useful for making long regexes readable by splitting over many lines. If x is not specified, whitespace characters are considered to be significant and to match those in the string. If you want to represent significant whitespace when using the x flag, you can use the multi-character escape s.

If no flag options are desired, you should either pass a zero-length string, or omit the $flags argument entirely. Table 18-15 shows some examples that use the $flags argument, which is the third argument of the matches function. They assume that the variable $address is bound to the following string (the line break is significant):

123 Main Street
Traverse City, MI 49684

Table 18-15. Examples of the $flags argument

Example

Return value

matches($address, "Street.*City")

false

matches($address, "Street.*City", "s")

true

matches($address, "Street$")

false

matches($address, "Street$", "m")

true

matches($address, "street")

false

matches($address, "street", "i")

true

matches($address, "Main Street")

true

matches($address, "Main Street", "x")

false

matches($address, "Main s Street", "x")

true

matches($address, "street$", "im")

true

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.12.108.175