regsub.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '" Copyright (c) 2000 Scriptics Corporation.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: regsub.n,v 1.9.2.1 2004/10/27 14:23:58 dkf Exp $
- '"
- .so man.macros
- .TH regsub n 8.3 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- regsub - Perform substitutions based on regular expression pattern matching
- .SH SYNOPSIS
- .VS 8.4
- fBregsub fR?fIswitchesfR? fIexp string subSpec fR?fIvarNamefR?
- .VE 8.4
- .BE
- .SH DESCRIPTION
- .PP
- This command matches the regular expression fIexpfR against
- fIstringfR,
- .VS 8.4
- and either copies fIstringfR to the variable whose name is
- given by fIvarNamefR or returns fIstringfR if fIvarNamefR is not
- present.
- .VE 8.4
- (Regular expression matching is described in the fBre_syntaxfR
- reference page.)
- If there is a match, then while copying fIstringfR to fIvarNamefR
- .VS 8.4
- (or to the result of this command if fIvarNamefR is not present)
- .VE 8.4
- the portion of fIstringfR that
- matched fIexpfR is replaced with fIsubSpecfR.
- If fIsubSpecfR contains a ``&'' or ``e0'', then it is replaced
- in the substitution with the portion of fIstringfR that
- matched fIexpfR.
- If fIsubSpecfR contains a ``efInfR'', where fInfR is a digit
- between 1 and 9, then it is replaced in the substitution with
- the portion of fIstringfR that matched the fInfR-th
- parenthesized subexpression of fIexpfR.
- Additional backslashes may be used in fIsubSpecfR to prevent special
- interpretation of ``&'' or ``e0'' or ``efInfR'' or
- backslash.
- The use of backslashes in fIsubSpecfR tends to interact badly
- with the Tcl parser's use of backslashes, so it's generally
- safest to enclose fIsubSpecfR in braces if it includes
- backslashes.
- .LP
- If the initial arguments to fBregsubfR start with fB-fR then
- they are treated as switches. The following switches are
- currently supported:
- .TP 10
- fB-allfR
- All ranges in fIstringfR that match fIexpfR are found and
- substitution is performed for each of these ranges.
- Without this switch only the first
- matching range is found and substituted.
- If fB-allfR is specified, then ``&'' and ``efInfR''
- sequences are handled for each substitution using the information
- from the corresponding match.
- .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-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 10
- fB-nocasefR
- Upper-case characters in fIstringfR will be converted to lower-case
- before matching against fIexpfR; however, substitutions specified
- by fIsubSpecfR use the original unconverted form of fIstringfR.
- .TP 10
- 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.
- fIindexfR will be constrained to the bounds of the input string.
- .TP 10
- 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
- .VS 8.4
- If fIvarNamefR is supplied, the command returns a count of the
- number of matching ranges that were found and replaced, otherwise the
- string after replacement is returned.
- .VE 8.4
- See the manual entry for fBregexpfR for details on the interpretation
- of regular expressions.
- .SH EXAMPLES
- Replace (in the string in variable fIstringfR) every instance of
- fBfoofR which is a word by itself with fBbarfR:
- .CS
- fBregsubfR -all {e<fooe>} $string bar string
- .CE
- .PP
- Insert double-quotes around the first instance of the word
- fBinterestingfR, however it is capitalised.
- .CS
- fBregsubfR -nocase {e<interestinge>} $string {"&"} string
- .CE
- .PP
- Convert all non-ASCII and Tcl-significant characters into eu escape
- sequences by using fBregsubfR and fBsubstfR in combination:
- .CS
- # This RE is just a character class for everything "bad"
- set RE {[][{}e$eseu0100-euffff]}
- # We will substitute with a fragment of Tcl script in brackets
- set substitution {[format eeeeu%04x [scan "ee&" %c]]}
- # Now we apply the substitution to get a subst-string that
- # will perform the computational parts of the conversion.
- set quoted [subst [fBregsubfR -all $RE $string $substitution]]
- .CE
- .SH "SEE ALSO"
- regexp(n), re_syntax(n), subst(n)
- .SH KEYWORDS
- match, pattern, regular expression, substitute