Inner functions
It is possible to use the following inner functions within other ContexQL functions that use String arguments, to enhance the flexibility of the queries with pattern matching functionality:
-
regex(pattern)- The function checks whether a match of a POSIX regular expression pattern occurs within a string.
- In case a specific location in a string is needed, metacharacters
^and$can be used to bind to start and end of the string respectively. - Allows complex pattern matching based on regular expression syntax.
- Example:
@has_symbol(regex("MAX"))- This matches all objects that contain a symbol with a
MAXsubstring in its name.
- This matches all objects that contain a symbol with a
tipThis function can also be used to check the length of a string metadata entry. For example, the following code will check if the entry is at least 150 characters long:
@match_object_meta($some_meta regex("^.{150,}$"))The upper limit of a bound in POSIX regex is 255, therefore if you need to enforce longer strings you need to repeat the matching block or multiply it.
-
iregex(pattern)- A case-insensitive version of regex.
- Performs matching without regard to case differences.
- Example:
@has_name(iregex("\\.exe$"))- This matches all objects that have names ending with
.exe, regardless of letter casing.
- This matches all objects that have names ending with
-
starts_with(prefix)- Matches values that start with the specified string prefix.
- Useful for straightforward, prefix-based matching without the complexity of regular expressions.
- Example:
@match_object_meta($properties.application starts_with("Microsoft"))- This matches objects that have a
$properties.applicationmetadata key, and its value begins withMicrosoft.
- This matches objects that have a
-
- Checks if a given value belongs to a defined set.
- Useful for matching against multiple different values.
- Example:
@has_name(in ("123.exe", iregex("invoice"))- This matches objects that have a name
123.exeor the name contains case-insensitive substringinvoice.
- This matches objects that have a name