Marcel van Lohuizen | 0117d90 | 2019-02-21 23:55:39 +0100 | [diff] [blame] | 1 | [TOC](Readme.md) [Prev](rangedef.md) [Next](lists.md) |
| 2 | |
| 3 | _Expressions_ |
| 4 | |
| 5 | # Regular expressions |
| 6 | |
| 7 | The `=~` and `!~` operators can be used to check against regular expressions. |
| 8 | |
| 9 | The expression `a =~ b` is true if `a` matches `b`, while |
| 10 | `a !~ b` is true if `a` does _not_ match `b`. |
| 11 | |
N | 483afc5 | 2019-08-18 14:55:25 +0000 | [diff] [blame] | 12 | Just as with comparison operators, these operators may be used |
Marcel van Lohuizen | 0117d90 | 2019-02-21 23:55:39 +0100 | [diff] [blame] | 13 | as unary versions to define a set of strings. |
| 14 | |
| 15 | |
| 16 | <!-- CUE editor --> |
Marcel van Lohuizen | f0c9404 | 2019-02-22 22:46:37 +0100 | [diff] [blame] | 17 | _regexp.cue:_ |
Marcel van Lohuizen | 0117d90 | 2019-02-21 23:55:39 +0100 | [diff] [blame] | 18 | ``` |
| 19 | a: "foo bar" =~ "foo [a-z]{3}" |
| 20 | b: "maze" !~ "^[a-z]{3}$" |
| 21 | |
| 22 | c: =~"^[a-z]{3}$" // any string with lowercase ASCII of length 3 |
| 23 | |
| 24 | d: c |
| 25 | d: "foo" |
| 26 | |
| 27 | e: c |
| 28 | e: "foo bar" |
| 29 | ``` |
| 30 | |
| 31 | <!-- result --> |
Marcel van Lohuizen | f0c9404 | 2019-02-22 22:46:37 +0100 | [diff] [blame] | 32 | `$ cue eval -i regexp.cue` |
Marcel van Lohuizen | 0117d90 | 2019-02-21 23:55:39 +0100 | [diff] [blame] | 33 | ``` |
| 34 | a: true |
| 35 | b: true |
Marcel van Lohuizen | 00c373d | 2019-06-07 01:08:23 +0200 | [diff] [blame] | 36 | c: =~"^[a-z]{3}$" |
Marcel van Lohuizen | 0117d90 | 2019-02-21 23:55:39 +0100 | [diff] [blame] | 37 | d: "foo" |
Marcel van Lohuizen | f06f781 | 2019-07-17 17:28:48 +0200 | [diff] [blame] | 38 | e: _|_ /* invalid value "foo bar" (does not match =~"^[a-z]{3}$") */ |
N | 483afc5 | 2019-08-18 14:55:25 +0000 | [diff] [blame] | 39 | ``` |