diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | doc/regexp.n | 28 | ||||
-rw-r--r-- | doc/regsub.n | 20 |
3 files changed, 35 insertions, 17 deletions
@@ -1,3 +1,7 @@ +2008-07-07 Donal K. Fellows <dkf@users.sf.net> + + * doc/regexp.n, doc/regsub.n: Correct examples. [Bug 1982642] + 2008-07-06 Donal K. Fellows <dkf@users.sf.net> * doc/lindex.n: Improve examples. diff --git a/doc/regexp.n b/doc/regexp.n index 1e31131..e40b9c4 100644 --- a/doc/regexp.n +++ b/doc/regexp.n @@ -1,10 +1,11 @@ +'\" -*- nroff -*- '\" '\" 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.29 2008/06/29 22:28:24 dkf Exp $ +'\" RCS: @(#) $Id: regexp.n,v 1.30 2008/07/07 08:29:14 dkf Exp $ '\" .so man.macros .TH regexp n 8.3 Tcl "Tcl Built-In Commands" @@ -161,30 +162,37 @@ Find the first occurrence of a word starting with \fBfoo\fR in a string that is not actually an instance of \fBfoobar\fR, and get the letters following it up to the end of the word into a variable: .CS -\fBregexp\fR {\e<foo(?!bar\e>)(\ew*)} $string \-> restOfWord +\fBregexp\fR {\emfoo(?!bar\eM)(\ew*)} $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 +.QW \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 \fBbadger\fR (in any case) within a string and store that in the variable \fBlocation\fR: .CS -\fBregexp\fR \-indices {(?i)\e<badger\e>} $string location +\fBregexp\fR \-indices {(?i)\embadger\eM} $string location +.CE +This could also be written as a \fIbasic\fR regular expression (as opposed +to using the default syntax of \fIadvanced\fR regular expressions) match by +prefixing the expression with a suitable flag: +.CS +\fBregexp\fR \-indices {(?ib)\e<badger\e>} $string location .CE .PP -Count the number of octal digits in a string: +This counts the number of octal digits in a string: .CS \fBregexp\fR \-all {[0\-7]} $string .CE .PP -List all words (consisting of all sequences of non-whitespace -characters) in a string: +This lists all words (consisting of all sequences of non-whitespace +characters) in a string, and is useful as a more powerful version of the +\fBsplit\fR command: .CS \fBregexp\fR \-all \-inline {\eS+} $string .CE .SH "SEE ALSO" -re_syntax(n), regsub(n), -string(n) +re_syntax(n), regsub(n), string(n) .SH KEYWORDS -match, regular expression, string +match, parsing, pattern, regular expression, splitting, string diff --git a/doc/regsub.n b/doc/regsub.n index cc5994f..5686c1d 100644 --- a/doc/regsub.n +++ b/doc/regsub.n @@ -1,3 +1,4 @@ +'\" -*- nroff -*- '\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -6,7 +7,7 @@ '\" 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.23 2008/06/29 22:28:24 dkf Exp $ +'\" RCS: @(#) $Id: regsub.n,v 1.24 2008/07/07 08:29:14 dkf Exp $ '\" .so man.macros .TH regsub n 8.3 Tcl "Tcl Built-In Commands" @@ -149,20 +150,26 @@ of regular expressions. Replace (in the string in variable \fIstring\fR) every instance of \fBfoo\fR which is a word by itself with \fBbar\fR: .CS -\fBregsub\fR -all {\e<foo\e>} $string bar string +\fBregsub\fR -all {\emfoo\eM} $string bar string +.CE +or (using the +.QW "basic regular expression" +syntax): +.CS +\fBregsub\fR -all {(?b)\e<foo\e>} $string bar string .CE .PP Insert double-quotes around the first instance of the word \fBinteresting\fR, however it is capitalized. .CS -\fBregsub\fR -nocase {\e<interesting\e>} $string {"&"} string +\fBregsub\fR -nocase {\eyinteresting\ey} $string {"&"} string .CE .PP Convert all non-ASCII and Tcl-significant characters into \eu escape sequences by using \fBregsub\fR and \fBsubst\fR in combination: .CS # This RE is just a character class for everything "bad" -set RE {[][{};#\e\e\e$\es\eu0100-\euffff]} +set RE {[][{};#\e\e\e$\es\eu0080-\euffff]} # We will substitute with a fragment of Tcl script in brackets set substitution {[format \e\e\e\eu%04x [scan "\e\e&" %c]]} @@ -172,7 +179,6 @@ set substitution {[format \e\e\e\eu%04x [scan "\e\e&" %c]]} set quoted [subst [\fBregsub\fR -all $RE $string $substitution]] .CE .SH "SEE ALSO" -regexp(n), re_syntax(n), subst(n), -string(n) +regexp(n), re_syntax(n), subst(n), string(n) .SH KEYWORDS -match, pattern, regular expression, substitute +match, pattern, quoting, regular expression, substitute |