painless-regexes.md 1.4 KB


mapped_pages:

Regexes [painless-regexes]

Regular expression constants are directly supported. To ensure fast performance, this is the only mechanism for creating patterns. Regular expressions are always constants and compiled efficiently a single time.

Pattern p = /[aeiou]/

::::{warning} A poorly written regular expression can significantly slow performance. If possible, avoid using regular expressions, particularly in frequently run scripts. ::::

Pattern flags [pattern-flags]

You can define flags on patterns in Painless by adding characters after the trailing / like /foo/i or /foo \w #comment/iUx. Painless exposes all of the flags from Java’s Pattern class using these characters:

Character Java Constant Example
c CANON_EQ 'å' ==~ /å/c (open in hex editor to see)
i CASE_INSENSITIVE 'A' ==~ /a/i
l LITERAL '[a]' ==~ /[a]/l
m MULTILINE 'a\nb\nc' =~ /^b$/m
s DOTALL (aka single line) 'a\nb\nc' =~ /.b./s
U UNICODE_CHARACTER_CLASS 'Ɛ' ==~ /\\w/U
u UNICODE_CASE 'Ɛ' ==~ /ɛ/iu
x COMMENTS (aka extended) 'a' ==~ /a #comment/x