35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
|
# extremely brief regex overview
|
||
|
|
||
|
Regexes are powerful. Gitolite uses that power as much as it can. If you
|
||
|
can't handle that power, hire someone who can and become a manager.
|
||
|
|
||
|
That said, here's a very quick overview of the highlights.
|
||
|
|
||
|
`^` and `$` are called "anchors". They anchor the match to the beginning and
|
||
|
end of the string respectively.
|
||
|
|
||
|
^foo matches any string starting with 'foo'
|
||
|
foo$ matches any string ending with 'foo'
|
||
|
^foo$ matches exact string 'foo'.
|
||
|
|
||
|
To be precise, the last one is "any string starting and ending with *the same*
|
||
|
'foo'". "foofoo" does not match.
|
||
|
|
||
|
`[0-9]` is an example of a character class; it matches any single digit.
|
||
|
`[a-z]` matches any lower case alpha, and `[0-9a-f]` is the range of hex
|
||
|
characters. You should now guess what `[a-zA-Z0-9_]` does.
|
||
|
|
||
|
`.` (the period) is special -- it matches any character. If you want to match
|
||
|
an actual period, you need to say `\.`.
|
||
|
|
||
|
`*`, `?`, and `+` are quantifiers. They apply to the previous token. `a*`
|
||
|
means "zero or more 'a' characters". Similarly `a+` means "one or more", and
|
||
|
`a?` means "zero or one".
|
||
|
|
||
|
As a result, `.*` means "any number (including zero) of any character".
|
||
|
|
||
|
The previous token need not be a single character; you can use parens to make
|
||
|
it longer. `(foo)+` matches one or more "foo", (like "foo", "foofoo",
|
||
|
"foofoofoo", etc.)
|
||
|
|