HomeGuides
Log In
Guides

RegEx Rules - NEW! 🚀

Java Regular Expressions, also known as RegEx, are sequences of characters that form a search pattern. A RegEx can be used to perform text searches as it defines a set of strings, usually united for a given purpose, i.e., to describe what you are searching for.

In the following paragraphs, we have included essential RegEx rules that you might find useful when compiling your RegEx.
For a complete RegEx syntax, refer to the class Pattern of Oracle documentation available at this link: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

Character Classes

[abc] Matches a or b, or c.
[^abc] Negation, matches everything except a or b, or c.
[a-c] Range, matches a or b, or c.
[a-c[f-h]] Union, matches a, b, c, f, g, h.
[a-c&&[b-c]] Intersection, matches b or c.
[a-c&&[^b-c]] Subtraction, matches a.

Predefined Character Classes

. Any character.
\d A digit: [0-9].
\D A non-digit: [^0-9].
\s A whitespace character: [\t\n\xOB\f\r].
\S A non-whitespace character: [^\s].
\w A word character: [a-zA-Z_0-9].
\W A non-word character: [^\w].

Boundary Matches

^ The beginning of a line.
$ The end of a line.
\b A word boundary.
\B A non-word boundary.
\A The beginnng of the input.
\G The end of the previous match.
\Z The end of the input but for the final terminator, if any.
\z The end of the input.

Pattern Flags

Pattern.CASE_INSENSITIVE Enables case-insensitive matching.
Pattern.COMMENTS Whitespace and comments starting with # are ignored until the end of a line.
Pattern.MULTILINE One expression can match multiple lines.
Pattern.UNIX_LINES Only the '\n' line terminator is recognized in the behavior of ., ^, and $.

Useful Java Classes and Methods

PATTERN

A pattern is a compiler representation of a regular expression.

Pattern compile(String regex) Compiles the given regular expression into a pattern.
Pattern compile(String regex, int flags) Compiles the given regular expression into a pattern with the given flags.
boolean matches(String regex) Tells whether or not this string matches the given regular expression.
String[] split(CharSequence input) Splits the given input sequence around matches of this pattern.
String quote(String s) Returns a literal pattern String for the specified String.
Predicate<String> asPredicate() Creates a predicate which can be used to match a string.

MATCHER

An engine that performs match operations on a character sequence by interpreting a pattern.

boolean matches() Attempts to match the entire region against the pattern.
boolean find() Attempts to find the next subsequence of the input sequence that matches the pattern.
int start() Returns the start index of the previous match.
int end() Returns the offset after the last character matched.

Quantifiers

Greedy Matches the longest matching group.
Reluctant Matches the shortest group.
Possessive Longest match or bust (no backoff).
Greedy Reluctant Possessive Description
X? X?? X?+ X, once or not at all.
X* X*? X*+ X, zero or more times.
X+ X+? X++ X, one or more times.
X{n} X{n}? X{n}+ X, exactly n times.
X{n,} X{n,}? X{n,}+ X, at least n times.
X{n,m} X{n,m}? X{n,m}+ X, at least n but not more than m times.

Groups & Backreferences

A group is a captured subsequence of characters that may be used later in the expression with a backreference.

(...) Defines a group.
\N Refers to a matched group.
(\d\d) A group of two digits.
(\d\d)/\1 Two digits repeated twice. \1 Refers to the matched group.

Logical Operations

XY X then Y.
X|Y X or Y.

🚀 Date placeholders

The RegEx field in the File Event Listener supports specific date placeholders that will be dynamically replaced at runtime.

Syntax

${date:<number of days before or after today's date>,format}

  • today's date is the offset value, and it is 0. You can go back with <-n>, e.g., ${date:-4} or forward with <+n>, e.g.,${date:+1}.
    For example, if the offset date is 2025-04-10 and you enter ${date:-1}, the resulting date would be 2025-04-09.
  • format is the date and time format, which can be specified using the standard notation available at this link: DateTimeFormatter (Java Platform SE 8).
    If no format is specified, the standard ISO8601 format will be used.

These placeholders are supported:

  • TODAY ISO format
    Format: ${date} or ${date:0}
    Example: ^cme.${date}.s.pa2.zip$
  • TODAY
    Format: ${date:0, format}
    Example: ^ME${date: 0, yyMMdd}.zip$
  • YESTERDAY ISO format
    Format: ${date:-1}
    Example: ^IRM2.0_IM_ICUS_${date:-1}.zip
  • YESTERDAY
    Format: ${date:-1, format}
    Example: ^OPT${date:-1, MMdd}F.SP6.zip$
  • TOMORROW
    Format: ${date:+1, format}
    Example: ^OPT${date:+1, MMdd}F.SP6.zip$
  • Custom PAST DAY
    A custom number of days in the past from today's date: ${date:-3}
    Example: ^OPT${date:-3, yyyyMMdd}F.SP6.zip$
  • Custom FUTURE DAY
    A custom number of days in the future from today's date: ${date:+2}
    Example: ^OPT${date:+2, yyyyMMdd}F.SP6.zip$