Client and backend. This class is shared: the same code is compiled into your app and into your server, so everything on this page works in both.

public final class Pattern

  1. Object
  2. Pattern

java.util.regex.Pattern for the Codename One runtime: a backtracking matcher written for this module, with the JDK’s syntax and the JDK’s answers for the constructs it has.

Supported

  • Literals, ., and every escape for a character: \t \n \r \f \a \e, \0nn, \xhh, \x{h...}, backslash-u with four hex digits, \cX, and \Q...\E.
  • Character classes with ranges, negation, nested unions and && intersections; \d \D \w \W \s \S \h \H \v \V; \R.
  • The POSIX classes (\p{Alpha}, \p{Punct}, …), the java... classes, and the Unicode properties L, Lu, Ll, N/Nd, IsAlphabetic, IsLetter, IsDigit, IsUppercase, IsLowercase, IsWhite_Space.
  • Unicode scripts (\p{IsGreek}, \p{script=Latn}), blocks (\p{InGreek}, \p{block=Arrows}) and general categories (\p{Sc}, \p{IsPd}, \p{gc=Mn}), from the Unicode 15.0 tables of UnicodeTables.
  • The binary properties IsDigit, IsPunctuation, IsTitlecase, IsControl, IsAssigned, IsHex_Digit, IsJoin_Control, IsNoncharacter_Code_Point, IsWord, IsAlnum, IsBlank, IsGraph and IsPrint, in any case.
  • \p{all}, any code point.
  • UNICODE_CHARACTER_CLASS ((?U)): \d \w \s \b and the POSIX classes take their Unicode definitions, as on the JDK.
  • Greedy, reluctant and possessive quantifiers.
  • Capturing, non-capturing and named groups, back references by number and by name, alternation, atomic groups.
  • Lookahead and bounded lookbehind, positive and negative.
  • ^ $ \A \z \Z \G \b \B.
  • CASE_INSENSITIVE, MULTILINE, DOTALL, COMMENTS, LITERAL, UNIX_LINES and UNICODE_CASE, as arguments and inline ((?i), (?i:...), (?-i)).

Refused

These throw PatternSyntaxException (the flags an UnsupportedOperationException) naming the construct, when the pattern is compiled. Nothing is accepted and then matched differently.

  • Other binary properties (\p{IsEmoji}, \p{IsIdeographic}, …).
  • \X, \N{name}, \b{g}.
  • CANON_EQ.

Differences

Text is matched one code point at a time, as on the JDK: . and a character class take a whole surrogate pair. The Unicode properties and categories answer from the tables, for all of Unicode; javaLetter and its kin answer this class’s own letter test, the scripts a device font is likely to have. A group repeated many thousand times over a long text recurses once for each repetition, as the JDK’s does, on a stack that is smaller on a device.

Fields

public static final int UNIX_LINES = 1
public static final int CASE_INSENSITIVE = 2
public static final int COMMENTS = 4
public static final int MULTILINE = 8
public static final int LITERAL = 16
public static final int DOTALL = 32
public static final int UNICODE_CASE = 64
public static final int CANON_EQ = 128
public static final int UNICODE_CHARACTER_CLASS = 256

Methods

public static Pattern compile(String regex)
public static Pattern compile(String regex, int flags)
public String pattern()
public String toString()Returns a string representation of the object.
public int flags()
public Matcher matcher(CharSequence input)
public static boolean matches(String regex, CharSequence input)
public String[] split(CharSequence input)
public String[] split(CharSequence input, int limit)Splits input around the matches of this pattern, by the JDK’s rules for limit.
public Stream<String> splitAsStream(CharSequence input)The pieces split(CharSequence) would answer, found one at a time as the stream asks for them, as the JDK’s are: the search starts on the first request, so a limit stops it and a change to a mutable input before then is seen.
public static String quote(String s)A pattern that matches s and nothing else.
public Predicate<String> asPredicate()
public Predicate<String> asMatchPredicate()

Inherited methods

Field details

UNIX_LINES

public static final int UNIX_LINES = 1

CASE_INSENSITIVE

public static final int CASE_INSENSITIVE = 2

COMMENTS

public static final int COMMENTS = 4

MULTILINE

public static final int MULTILINE = 8

LITERAL

public static final int LITERAL = 16

DOTALL

public static final int DOTALL = 32

UNICODE_CASE

public static final int UNICODE_CASE = 64

CANON_EQ

public static final int CANON_EQ = 128

UNICODE_CHARACTER_CLASS

public static final int UNICODE_CHARACTER_CLASS = 256

Method details

compile

public static Pattern compile(String regex)

compile

public static Pattern compile(String regex, int flags)

pattern

public String pattern()

toString

public String toString()
Returns a string representation of the object. In general, the toString method returns a string that “textually represents” this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@’, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + ‘@’ + Integer.toHexString(hashCode())

flags

public int flags()

matcher

public Matcher matcher(CharSequence input)

matches

public static boolean matches(String regex, CharSequence input)

split

public String[] split(CharSequence input)

split

public String[] split(CharSequence input, int limit)
Splits input around the matches of this pattern, by the JDK’s rules for limit.

splitAsStream

public Stream<String> splitAsStream(CharSequence input)
The pieces split(CharSequence) would answer, found one at a time as the stream asks for them, as the JDK’s are: the search starts on the first request, so a limit stops it and a change to a mutable input before then is seen.

quote

public static String quote(String s)
A pattern that matches s and nothing else.

asPredicate

public Predicate<String> asPredicate()

asMatchPredicate

public Predicate<String> asMatchPredicate()