expr
supports pattern matching and other string operators. These
have higher precedence than both the numeric and relational operators (in
the next sections).
Perform pattern matching. The arguments are converted to strings and the
second is considered to be a (basic, a la GNU grep
) regular
expression, with a ^
implicitly prepended. The first argument is
then matched against this regular expression.
If regex does not use ‘\(’ and ‘\)’, the :
expression returns the number of characters matched, or 0 if the match
fails.
If regex uses ‘\(’ and ‘\)’, the :
expression
returns the part of string that matched the subexpression, or
the null string if the match failed or the subexpression did not
contribute to the match.
Only the first ‘\( … \)’ pair is relevant to the return value; additional pairs are meaningful only for grouping the regular expression operators.
In the regular expression, \+
, \?
, and \|
are
operators which respectively match one or more, zero or one, or separate
alternatives. These operators are GNU extensions. See Regular Expressions in The GNU Grep Manual, for details of
regular expression syntax. Some examples are in Examples of using expr
.
An alternative way to do pattern matching. This is the same as ‘string : regex’.
Returns the substring of string beginning at position with length at most length. If either position or length is negative, zero, or non-numeric, returns the null string.
Returns the first position in string where the first character in charset was found. If no character in charset is found in string, return 0.
Returns the length of string.
Interpret token as a string, even if it is a keyword like match
or an operator like /
.
This makes it possible to test expr length + "$x"
or
expr + "$x" : '.*/\(.\)'
and have it do the right thing even if
the value of $x happens to be (for example) /
or index
.
This operator is a GNU extension. Portable shell scripts should use
" $token" : ' \(.*\)'
instead of + "$token"
.
To make expr
interpret keywords as strings, you must use the
quote
operator.