other versions
- wheezy 8.4.19-5
conflicting packages
Tcl_RegExpMatch(3tcl) | Tcl Library Procedures | Tcl_RegExpMatch(3tcl) |
NAME¶
Tcl_RegExpMatch, Tcl_RegExpCompile, Tcl_RegExpExec, Tcl_RegExpRange, Tcl_GetRegExpFromObj, Tcl_RegExpMatchObj, Tcl_RegExpExecObj, Tcl_RegExpGetInfo - Pattern matching with regular expressionsSYNOPSIS¶
#include <tcl.h>int Tcl_RegExpMatchObj(interp, strObj, patObj)int Tcl_RegExpMatch(interp, string, pattern)Tcl_RegExp Tcl_RegExpCompile(interp, pattern)int Tcl_RegExpExec(interp, regexp, string, start)Tcl_RegExpRange(regexp, index, startPtr, endPtr)Tcl_RegExp Tcl_GetRegExpFromObj(interp, patObj, cflags)int Tcl_RegExpExecObj(interp, regexp, objPtr, offset, nmatches, eflags)Tcl_RegExpGetInfo(regexp, infoPtr)
ARGUMENTS¶
- Tcl_Interp *interp (in)
- Tcl interpreter to use for error reporting. The interpreter may be NULL if no error reporting is desired.
- Tcl_Obj *strObj (in/out)
- Refers to the object from which to get the string to search. The internal representation of the object may be converted to a form that can be efficiently searched.
- Tcl_Obj *patObj (in/out)
- Refers to the object from which to get a regular expression. The compiled regular expression is cached in the object.
- char *string (in)
- String to check for a match with a regular expression.
- CONST char *pattern (in)
- String in the form of a regular expression pattern.
- Tcl_RegExp regexp (in)
- Compiled regular expression. Must have been returned previously by Tcl_GetRegExpFromObj or Tcl_RegExpCompile.
- char *start (in)
- If string is just a portion of some other string, this argument identifies the beginning of the larger string. If it isn't the same as string, then no ^ matches will be allowed.
- int index (in)
- Specifies which range is desired: 0 means the range of the entire match, 1 or greater means the range that matched a parenthesized sub-expression.
- CONST char **startPtr (out)
- The address of the first character in the range is stored here, or NULL if there is no such range.
- CONST char **endPtr (out)
- The address of the character just after the last one in the range is stored here, or NULL if there is no such range.
- int cflags (in)
- OR-ed combination of compilation flags. See below for more information.
- Tcl_Obj *objPtr (in/out)
- An object which contains the string to check for a match with a regular expression.
- int offset (in)
- The character offset into the string where matching should begin. The value of the offset has no impact on ^ matches. This behavior is controlled by eflags.
- int nmatches (in)
- The number of matching subexpressions that should be remembered for later use. If this value is 0, then no subexpression match information will be computed. If the value is -1, then all of the matching subexpressions will be remembered. Any other value will be taken as the maximum number of subexpressions to remember.
- int eflags (in)
- OR-ed combination of the values TCL_REG_NOTBOL and TCL_REG_NOTEOL. See below for more information.
- Tcl_RegExpInfo *infoPtr (out)
- The address of the location where information about a
previous match should be stored by Tcl_RegExpGetInfo.
DESCRIPTION¶
Tcl_RegExpMatch determines whether its pattern argument matches regexp, where regexp is interpreted as a regular expression using the rules in the re_syntax reference page. If there is a match then Tcl_RegExpMatch returns 1. If there is no match then Tcl_RegExpMatch returns 0. If an error occurs in the matching process (e.g. pattern is not a valid regular expression) then Tcl_RegExpMatch returns -1 and leaves an error message in the interpreter result. Tcl_RegExpMatchObj is similar to Tcl_RegExpMatch except it operates on the Tcl objects strObj and patObj instead of UTF strings. Tcl_RegExpMatchObj is generally more efficient than Tcl_RegExpMatch, so it is the preferred interface. Tcl_RegExpCompile, Tcl_RegExpExec, and Tcl_RegExpRange provide lower-level access to the regular expression pattern matcher. Tcl_RegExpCompile compiles a regular expression string into the internal form used for efficient pattern matching. The return value is a token for this compiled form, which can be used in subsequent calls to Tcl_RegExpExec or Tcl_RegExpRange. If an error occurs while compiling the regular expression then Tcl_RegExpCompile returns NULL and leaves an error message in the interpreter result. Note: the return value from Tcl_RegExpCompile is only valid up to the next call to Tcl_RegExpCompile; it is not safe to retain these values for long periods of time. Tcl_RegExpExec executes the regular expression pattern matcher. It returns 1 if string contains a range of characters that match regexp, 0 if no match is found, and -1 if an error occurs. In the case of an error, Tcl_RegExpExec leaves an error message in the interpreter result. When searching a string for multiple matches of a pattern, it is important to distinguish between the start of the original string and the start of the current search. For example, when searching for the second occurrence of a match, the string argument might point to the character just after the first match; however, it is important for the pattern matcher to know that this is not the start of the entire string, so that it doesn't allow ^ atoms in the pattern to match. The start argument provides this information by pointing to the start of the overall string containing string. Start will be less than or equal to string; if it is less than string then no ^ matches will be allowed. Tcl_RegExpRange may be invoked after Tcl_RegExpExec returns; it provides detailed information about what ranges of the string matched what parts of the pattern. Tcl_RegExpRange returns a pair of pointers in *startPtr and *endPtr that identify a range of characters in the source string for the most recent call to Tcl_RegExpExec. Index indicates which of several ranges is desired: if index is 0, information is returned about the overall range of characters that matched the entire pattern; otherwise, information is returned about the range of characters that matched the index'th parenthesized subexpression within the pattern. If there is no range corresponding to index then NULL is stored in *startPtr and *endPtr. Tcl_GetRegExpFromObj, Tcl_RegExpExecObj, and Tcl_RegExpGetInfo are object interfaces that provide the most direct control of Henry Spencer's regular expression library. For users that need to modify compilation and execution options directly, it is recommended that you use these interfaces instead of calling the internal regexp functions. These interfaces handle the details of UTF to Unicode translations as well as providing improved performance through caching in the pattern and string objects. Tcl_GetRegExpFromObj attempts to return a compiled regular expression from the patObj. If the object does not already contain a compiled regular expression it will attempt to create one from the string in the object and assign it to the internal representation of the patObj. The return value of this function is of type Tcl_RegExp. The return value is a token for this compiled form, which can be used in subsequent calls to Tcl_RegExpExecObj or Tcl_RegExpGetInfo. If an error occurs while compiling the regular expression then Tcl_GetRegExpFromObj returns NULL and leaves an error message in the interpreter result. The regular expression token can be used as long as the internal representation of patObj refers to the compiled form. The eflags argument is a bitwise OR of zero or more of the following flags that control the compilation of patObj:- TCL_REG_ADVANCED
- Compile advanced regular expressions (`AREs'). This mode corresponds to the normal regular expression syntax accepted by the Tcl regexp and regsub commands.
- TCL_REG_EXTENDED
- Compile extended regular expressions (`EREs'). This mode corresponds to the regular expression syntax recognized by Tcl 8.0 and earlier versions.
- TCL_REG_BASIC
- Compile basic regular expressions (`BREs'). This mode corresponds to the regular expression syntax recognized by common Unix utilities like sed and grep. This is the default if no flags are specified.
- TCL_REG_EXPANDED
- Compile the regular expression (basic, extended, or advanced) using an expanded syntax that allows comments and whitespace. This mode causes non-backslashed non-bracket-expression white space and #-to-end-of-line comments to be ignored.
- TCL_REG_QUOTE
- Compile a literal string, with all characters treated as ordinary characters.
- TCL_REG_NOCASE
- Compile for matching that ignores upper/lower case distinctions.
- TCL_REG_NEWLINE
- Compile for newline-sensitive matching. By default, newline is a completely ordinary character with no special meaning in either regular expressions or strings. 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. REG_NEWLINE is the bitwise OR of REG_NLSTOP and REG_NLANCH.
- TCL_REG_NLSTOP
- Compile for partial newline-sensitive matching, with the behavior of `[^' bracket expressions and `.' affected, but not the behavior of `^' and `$'. In this mode, `[^' bracket expressions and `.' never match newline.
- TCL_REG_NLANCH
- Compile for inverse partial newline-sensitive matching, with the behavior of of `^' and `$' (the ``anchors'') affected, but not the behavior of `[^' bracket expressions and `.'. In this mode `^' 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.
- TCL_REG_NOSUB
- Compile for matching that reports only success or failure, not what was matched. This reduces compile overhead and may improve performance. Subsequent calls to Tcl_RegExpGetInfo or Tcl_RegExpRange will not report any match information.
- TCL_REG_CANMATCH
- Compile for matching that reports the potential to complete a partial match given more text (see below).
- TCL_REG_NOTBOL
- The starting character will not be treated as the beginning of a line or the beginning of the string, so `^' will not match there. Note that this flag has no effect on how ` \A' matches.
- TCL_REG_NOTEOL
- The last character in the string will not be treated as the end of a line or the end of the string, so '$' will not match there. Note that this flag has no effect on how ` \Z' matches.
typedef struct Tcl_RegExpInfo { int nsubs; Tcl_RegExpIndices * matches; long extendStart; } Tcl_RegExpInfo;
typedef struct Tcl_RegExpIndices { long start; long end; } Tcl_RegExpIndices;
SEE ALSO¶
re_syntax(3tcl)KEYWORDS¶
match, pattern, regular expression, string, subexpression, Tcl_RegExpIndices, Tcl_RegExpInfo8.1 | Tcl |