regexp.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
- '"
- '" Copyright (c) 1998 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: regexp.n,v 1.12.2.1 2004/10/27 14:23:57 dkf Exp $
- '"
- .so man.macros
- .TH regexp n 8.3 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- regexp - Match a regular expression against a string
- .SH SYNOPSIS
- fBregexp fR?fIswitchesfR? fIexp string fR?fImatchVarfR? ?fIsubMatchVar subMatchVar ...fR?
- .BE
- .SH DESCRIPTION
- .PP
- Determines whether the regular expression fIexpfR matches part or
- all of fIstringfR and returns 1 if it does, 0 if it doesn't, unless
- fB-inlinefR is specified (see below).
- (Regular expression matching is described in the fBre_syntaxfR
- reference page.)
- .LP
- If additional arguments are specified after fIstringfR then they
- are treated as the names of variables in which to return
- information about which part(s) of fIstringfR matched fIexpfR.
- fIMatchVarfR will be set to the range of fIstringfR that
- matched all of fIexpfR. The first fIsubMatchVarfR will contain
- the characters in fIstringfR that matched the leftmost parenthesized
- subexpression within fIexpfR, the next fIsubMatchVarfR will
- contain the characters that matched the next parenthesized
- subexpression to the right in fIexpfR, and so on.
- .PP
- If the initial arguments to fBregexpfR start with fB-fR then
- they are treated as switches. The following switches are
- currently supported:
- .TP 15
- fB-aboutfR
- Instead of attempting to match the regular expression, returns a list
- containing information about the regular expression. The first
- element of the list is a subexpression count. The second element is a
- list of property names that describe various attributes of the regular
- expression. This switch is primarily intended for debugging purposes.
- .TP 15
- fB-expandedfR
- Enables use of the expanded regular expression syntax where
- whitespace and comments are ignored. This is the same as specifying
- the fB(?x)fR embedded option (see the fBre_syntaxfR manual page).
- .TP 15
- fB-indicesfR
- Changes what is stored in the fIsubMatchVarfRs.
- Instead of storing the matching characters from fIstringfR,
- each variable
- will contain a list of two decimal strings giving the indices
- in fIstringfR of the first and last characters in the matching
- range of characters.
- .TP 15
- fB-linefR
- Enables newline-sensitive matching. By default, newline is a
- completely ordinary character with no special meaning. With this
- flag, `[^' bracket expressions and `.' never match newline, `^'
- matches an empty string after any newline in addition to its normal
- function, and `$' matches an empty string before any newline in
- addition to its normal function. This flag is equivalent to
- specifying both fB-linestopfR and fB-lineanchorfR, or the
- fB(?n)fR embedded option (see the fBre_syntaxfR manual page).
- .TP 15
- fB-linestopfR
- Changes the behavior of `[^' bracket expressions and `.' so that they
- stop at newlines. This is the same as specifying the fB(?p)fR
- embedded option (see the fBre_syntaxfR manual page).
- .TP 15
- fB-lineanchorfR
- Changes the behavior of `^' and `$' (the ``anchors'') so they match the
- beginning and end of a line respectively. This is the same as
- specifying the fB(?w)fR embedded option (see the fBre_syntaxfR
- manual page).
- .TP 15
- fB-nocasefR
- Causes upper-case characters in fIstringfR to be treated as
- lower case during the matching process.
- .VS 8.3
- .TP 15
- fB-allfR
- Causes the regular expression to be matched as many times as possible
- in the string, returning the total number of matches found. If this
- is specified with match variables, they will contain information for
- the last match only.
- .TP 15
- fB-inlinefR
- Causes the command to return, as a list, the data that would otherwise
- be placed in match variables. When using fB-inlinefR,
- match variables may not be specified. If used with fB-allfR, the
- list will be concatenated at each iteration, such that a flat list is
- always returned. For each match iteration, the command will append the
- overall match data, plus one element for each subexpression in the
- regular expression. Examples are:
- .CS
- regexp -inline -- {\w(\w)} " inlined "
- => {in n}
- regexp -all -inline -- {\w(\w)} " inlined "
- => {in n li i ne e}
- .CE
- .TP 15
- fB-startfR fIindexfR
- Specifies a character index offset into the string to start
- matching the regular expression at. When using this switch, `^'
- will not match the beginning of the line, and \A will still
- match the start of the string at fIindexfR. If fB-indicesfR
- is specified, the indices will be indexed starting from the
- absolute beginning of the input string.
- fIindexfR will be constrained to the bounds of the input string.
- .VE 8.3
- .TP 15
- fB-|-fR
- Marks the end of switches. The argument following this one will
- be treated as fIexpfR even if it starts with a fB-fR.
- .PP
- If there are more fIsubMatchVarfR's than parenthesized
- subexpressions within fIexpfR, or if a particular subexpression
- in fIexpfR doesn't match the string (e.g. because it was in a
- portion of the expression that wasn't matched), then the corresponding
- fIsubMatchVarfR will be set to ``fB-1 -1fR'' if fB-indicesfR
- has been specified or to an empty string otherwise.
- .SH EXAMPLES
- Find the first occurrence of a word starting with fBfoofR in a
- string that is not actually an instance of fBfoobarfR, and get the
- letters following it up to the end of the word into a variable:
- .CS
- fBregexpfR {\<foo(?!bar\>)(\w*)} $string -> restOfWord
- .CE
- Note that the whole matched substring has been placed in the variable
- fB->fR which is a name chosen to look nice given that we are not
- actually interested in its contents.
- .PP
- Find the index of the word fBbadgerfR (in any case) within a string
- and store that in the variable fBlocationfR:
- .CS
- fBregexpfR -indices {(?i)\<badger\>} $string location
- .CE
- .PP
- Count the number of octal digits in a string:
- .CS
- fBregexpfR -all {[0-7]} $string
- .CE
- .PP
- List all words (consisting of all sequences of non-whitespace
- characters) in a string:
- .CS
- fBregexpfR -all -inline {\S+} $string
- .CE
- .SH "SEE ALSO"
- re_syntax(n), regsub(n)
- .SH KEYWORDS
- match, regular expression, string