Difference between revisions of "Template:LSL Regular Expressions"

From Second Life Wiki
Jump to navigation Jump to search
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Regular Expression Cheat Sheet ===
{{{!}} class="notsortable" {{Prettytable|style=margin-top:0;}}
{{{!}} class="notsortable" {{Prettytable|style=margin-top:0;}}
{{!}}-
{{!}}-
Line 12: Line 14:
| Matches the beginning of the string.
| Matches the beginning of the string.
|
|
|-
! $
| Matches the end of the string.
|
|-
! colspan=3|Expression Prefixes
|-
! (?i)
| Makes search string case insensitive.
| This must be the first thing that appears in the search string.
"(?i)apple" will match "apple", "APPLE", "ApPlE", and any other combination of upper and lower case characters.
|-
|-
! $
! $
Line 100: Line 114:
\D
\D
| Any decimal digit.
| Any decimal digit.
| '''\d''' is equivalent to <nowiki>[[</nowiki>:digit:]] or [0-9]
|  
 
* '''\d''' &rarr; <nowiki>[[</nowiki>:digit:]] or [0-9]
'''\D''' is equivalent to <nowiki>[^[</nowiki>:digit:]] or [^0-9]
* '''\D''' &rarr; <nowiki>[^[</nowiki>:digit:]] or [^0-9]
|-
|-
! \l
! \l
Line 108: Line 122:
\L
\L
| Any lower case character.
| Any lower case character.
| '''\l''' is equivalent to <nowiki>[[</nowiki>:lower:]] or [a-z]
|  
 
* '''\l''' &rarr; <nowiki>[[</nowiki>:lower:]] or [a-z]
'''\L''' is equivalent to <nowiki>[^[</nowiki>:lower:]] or [^a-z]
* '''\L''' &rarr; <nowiki>[^[</nowiki>:lower:]] or [^a-z]
|-
|-
! \s
! \s
Line 116: Line 130:
\S
\S
| Any whitespace character.
| Any whitespace character.
| '''\s''' is equivalent to <nowiki>[[</nowiki>:space:]] or [ \t\r\n]
|  
 
* '''\s''' &rarr; <nowiki>[[</nowiki>:space:]] or [ \t\r\n]
'''\S''' is equivalent to <nowiki>[^[</nowiki>:space:]] or [^ \t\r\n]
* '''\S''' &rarr; <nowiki>[^[</nowiki>:space:]] or [^ \t\r\n]
|-
|-
! \u
! \u
Line 124: Line 138:
\U
\U
| Any upper case character.
| Any upper case character.
| '''\u''' is equivalent to <nowiki>[[</nowiki>:upper:]] or [A-Z]
|  
 
* '''\u''' &rarr; <nowiki>[[</nowiki>:upper:]] or [A-Z]
'''\U''' is equivalent to <nowiki>[^[</nowiki>:upper:]] or [^A-Z]
* '''\U''' &rarr; <nowiki>[^[</nowiki>:upper:]] or [^A-Z]
|-
|-
! \w
! \w
Line 134: Line 148:


Alphanumeric plus underscore
Alphanumeric plus underscore
| '''\w''' is equivalent to <nowiki>[[</nowiki>:upper:][:lower:][:digit:]_] or [A-Za-z0-9_]
|  
 
* '''\w''' &rarr; <nowiki>[[</nowiki>:upper:][:lower:][:digit:]_] or [A-Za-z0-9_]
'''\W''' is equivalent to <nowiki>[^[</nowiki>:upper:][:lower:][:digit:]_] or [^A-Za-z0-9_]
* '''\W''' &rarr; <nowiki>[^[</nowiki>:upper:][:lower:][:digit:]_] or [^A-Za-z0-9_]
|-
|-
|
|
Line 152: Line 166:
! \B
! \B
| Not a word boundary.
| Not a word boundary.
|- style="text-align:right;"
| colspan=3 |
'''*Note*''' LSL uses '\' as an escape character in strings. The escape characters above must be double escaped. So "\d" needs to be written in LSL as "\\d"
Please see [https://wiki.secondlife.com/wiki/Category:LSL_String#Escape_Codes LSL Strings, Escape Codes]
|-
|-
! colspan=3|Named Character Classes
! colspan=3|Named Character Classes
Line 220: Line 240:
|-
|-
! xdigit
! xdigit
w
| Any hexadecimal digit character
| Any hexadecimal digit character
|  
|  

Latest revision as of 10:57, 1 July 2024

Regular Expression Cheat Sheet

Wildcard
. Matches any character
Anchors
^ Matches the beginning of the string.
$ Matches the end of the string.
Expression Prefixes
(?i) Makes search string case insensitive. This must be the first thing that appears in the search string.

"(?i)apple" will match "apple", "APPLE", "ApPlE", and any other combination of upper and lower case characters.

$ Matches the end of the string.
Repeats
* Matches the preceding atom 0 or more times.
+ Matches the preceding atom 1 or more times.
? Matches the preceding atom 0 or 1 times.
{n}

{n,}

{n, m}

Matches the preceding atom n, n or more, or between n and m times.
Sub-expressions
(expression) Text enclosed in parentheses is a marked sub-expression. Text matched as part of a sub-expressions is split out and may be repeated.
Alternation
a | b Match either a or b.
Character Sets
[abc] Matches any one of the enumerated characters.
[a-c] Matches any character in the specified range.
[^abc] Matches any character other than the enumerated characters.
[[:name:]] Matches any character of the named class.
Any of the above character set definitions may be combined.
Escape Sequences
Specific Characters
\e ASCII 0x1B, ESC
\n New line
\r Carriage return
\t Tab
\xdd Matches an ASCII character with the code dd
Single character classes
\d

\D

Any decimal digit.
  • \d → [[:digit:]] or [0-9]
  • \D → [^[:digit:]] or [^0-9]
\l

\L

Any lower case character.
  • \l → [[:lower:]] or [a-z]
  • \L → [^[:lower:]] or [^a-z]
\s

\S

Any whitespace character.
  • \s → [[:space:]] or [ \t\r\n]
  • \S → [^[:space:]] or [^ \t\r\n]
\u

\U

Any upper case character.
  • \u → [[:upper:]] or [A-Z]
  • \U → [^[:upper:]] or [^A-Z]
\w

\W

Any "word" character.

Alphanumeric plus underscore

  • \w → [[:upper:][:lower:][:digit:]_] or [A-Za-z0-9_]
  • \W → [^[:upper:][:lower:][:digit:]_] or [^A-Za-z0-9_]
Word boundaries
\< Start of word.
\> End of word
\b
\B Not a word boundary.

*Note* LSL uses '\' as an escape character in strings. The escape characters above must be double escaped. So "\d" needs to be written in LSL as "\\d"

Please see LSL Strings, Escape Codes

Named Character Classes
alnum Any alpha-numeric character.
  • [[:alnum:]] → [0-9a-zA-Z]
  • [^[:alnum:]] → [^0-9a-zA-Z]
alpha Any alphabetic character.
  • [[:alpha:]] → [a-zA-Z]
  • [^[:alpha:]] → [^a-zA-Z]
blank Any whitespace character that is not a line separator.
cntrl Any control character
  • [[:cntrl:]] → [\x01-\x31]
  • [^[:cntrl:]] → [^\x01-\x31]
digit

d

Any decimal digit
  • [[:digit:]] → [0-9]
  • [^[:digit:]] → [^0-9]
lower

l

Any lower case character.
  • [[:lower:]] → [a-z]
  • [^[:lower:]] → [^a-z]
print Any printable character.
punct Any punctiation character.
space

s

Any whitespace character.
upper

u

Any upper case character.
  • [[:upper:]] → [A-Z]
  • [^[:upper:]] → [^A-Z]
word

w

Any control character
  • [[:word:]] → [0-9a-zA-Z_]
  • [^[:word:]] → [^0-9a-zA-Z_]
xdigit Any hexadecimal digit character
  • [[:xdigit:]] → [0-9a-fA-F]
  • [^[:xdigit:]] → [^0-9a-fA-F]