Client API. The Codename One framework your app is built on: this runs on the device, not in a backend.

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()