1 Welcome to PLT Scheme
2 Scheme Essentials
3 Built-In Datatypes
4 Expressions and Definitions
5 Programmer-Defined Datatypes
6 Modules
7 Contracts
8 Input and Output
9 Regular Expressions
10 Exceptions and Control
11 Iterations and Comprehensions
12 Pattern Matching
13 Classes and Objects
14 Units (Components)
15 Reflection and Dynamic Evaluation
16 Macros
17 Performance
18 Running and Creating Executables
19 Compilation and Configuration
20 More Libraries
Bibliography
Index
Version: 4.0.2

 

9.3 Basic Assertions

The assertions ^ and $ identify the beginning and the end of the text string, respectively. They ensure that their adjoining regexps match at one or other end of the text string:

  > (regexp-match-positions #rx"^contact" "first contact")

  #f

The regexp above fails to match because contact does not occur at the beginning of the text string. In

  > (regexp-match-positions #rx"laugh$" "laugh laugh laugh laugh")

  ((18 . 23))

the regexp matches the last laugh.

The metasequence \b asserts that a word boundary exists, but this metasequence works only with #px syntax. In

  > (regexp-match-positions #px"yack\\b" "yackety yack")

  ((8 . 12))

the yack in yackety doesn’t end at a word boundary so it isn’t matched. The second yack does and is.

The metasequence \B (also #px only) has the opposite effect to \b; it asserts that a word boundary does not exist. In

  > (regexp-match-positions #px"an\\B" "an analysis")

  ((3 . 5))

the an that doesn’t end in a word boundary is matched.