## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > RegExp

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tcl_RegExpMatch, Tcl_RegExpCompile, Tcl_RegExpExec, Tcl_RegExpRange, Tcl_GetRegExpFromObj, Tcl_RegExpMatchObj, Tcl_RegExpExecObj, Tcl_RegExpGetInfo — 正規表現による文様合致　　 Pattern matching with regular expressions
  SYNOPSIS
    #include <tcl.h>
    int
    Tcl_RegExpMatchObj(interp, textObj, patObj)
    int
    Tcl_RegExpMatch(interp, text, pattern)
    Tcl_RegExp
    Tcl_RegExpCompile(interp, pattern)
    int
    Tcl_RegExpExec(interp, regexp, text, start)
    void
    Tcl_RegExpRange(regexp, index, startPtr, endPtr)
    Tcl_RegExp
    Tcl_GetRegExpFromObj(interp, patObj, cflags)
    int
    Tcl_RegExpExecObj(interp, regexp, textObj, offset, nmatches, eflags)
    void
    Tcl_RegExpGetInfo(regexp, infoPtr)
  引数 ARGUMENTS
    Tcl_Interp *interp (入力in)
    Tcl_Obj *textObj (入出力in/out)
    Tcl_Obj *patObj (入出力in/out)
    const char *text (入力in)
    const char *pattern (入力in)
    Tcl_RegExp regexp (入力in)
    const char *start (入力in)
    int index (入力in)
    const char **startPtr (出力out)
    const char **endPtr (出力out)
    int cflags (入力in)
    int offset (入力in)
    int nmatches (入力in)
    int eflags (入力in)
    Tcl_RegExpInfo *infoPtr (出力out)
  説明 DESCRIPTION
    TCL_REG_ADVANCED
    TCL_REG_EXTENDED
    TCL_REG_BASIC
    TCL_REG_EXPANDED
    TCL_REG_QUOTE
    TCL_REG_NOCASE
    TCL_REG_NEWLINE
    TCL_REG_NLSTOP
    TCL_REG_NLANCH
    TCL_REG_NOSUB
    TCL_REG_CANMATCH
    TCL_REG_NOTBOL
    TCL_REG_NOTEOL
  SEE ALSO
  KEYWORDS

### NAME

Tcl_RegExpMatch, Tcl_RegExpCompile, Tcl_RegExpExec, Tcl_RegExpRange, Tcl_GetRegExpFromObj, Tcl_RegExpMatchObj, Tcl_RegExpExecObj, Tcl_RegExpGetInfo — 正規表現による文様合致　　 Pattern matching with regular expressions

### SYNOPSIS

#include <tcl.h>
int
Tcl_RegExpMatchObj(interp, textObj, patObj)
int
Tcl_RegExpMatch(interp, text, pattern)
Tcl_RegExp
Tcl_RegExpCompile(interp, pattern)
int
Tcl_RegExpExec(interp, regexp, text, start)
void
Tcl_RegExpRange(regexp, index, startPtr, endPtr)
Tcl_RegExp
Tcl_GetRegExpFromObj(interp, patObj, cflags)
int
Tcl_RegExpExecObj(interp, regexp, textObj, offset, nmatches, eflags)
void
Tcl_RegExpGetInfo(regexp, infoPtr)

### 引数 ARGUMENTS

Tcl_Interp *interp (入力in)
  不都合報告の為に使用する解釈実行機能｡この解釈実行機能は､不都合報告を望まないなら NULL でも好い｡　 Tcl interpreter to use for error reporting. The interpreter may be NULL if no error reporting is desired.

Tcl_Obj *textObj (入出力in/out)
  そこから文書を捜索させる値を参照する｡値の内部表現は十分に捜索可能な形式に変換されるかもしれない｡　 Refers to the value from which to get the text to search. The internal representation of the value may be converted to a form that can be efficiently searched.

Tcl_Obj *patObj (入出力in/out)
  そこから正規表現を得る値を参照する｡翻訳された正規表現が値のなかに高速記憶されている｡　 Refers to the value from which to get a regular expression. The compiled regular expression is cached in the value.

const char *text (入力in)
  正規表現に合致する為に捜索する文書｡　 Text to search for a match with a regular expression.

const char *pattern (入力in)
  正規表現文様の形式の文字列｡　 String in the form of a regular expression pattern.

Tcl_RegExp regexp (入力in)
  翻訳された正規表現｡予め Tcl_GetRegExpFromObj か Tcl_RegExpCompile によって返されたものでなければならない｡ Compiled regular expression. Must have been returned previously by Tcl_GetRegExpFromObj or Tcl_RegExpCompile.

const char *start (入力in)
  もし文書textが何か他の文字列の一部の場合､この引数は大きな文字列の始まりを識別する｡もし文書textと同じではない場合､どの “^” の合致も許容されない｡　 If text is just a portion of some other string, this argument identifies the beginning of the larger string. If it is not the same as text, then no “^” matches will be allowed.

int index (入力in)
  どの範囲が望ましいかを指定する: 0 は範囲全体が合致することを意味する､ 1 以上は括弧で括った小表現に合致する範囲を意味する｡　 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)
  範囲の最初の文字の番地が此処に保存される､そのような範囲がない場合は NULL である｡　 The address of the first character in the range is stored here, or NULL if there is no such range.

const char **endPtr (出力out)
  範囲内の最後の直後の番地がここに保存される､そのような範囲がない場合は NULL である｡　 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)
  TCL_REG_ADVANCED と TCL_REG_EXTENDED と TCL_REG_BASIC と TCL_REG_EXPANDED と TCL_REG_QUOTE と TCL_REG_NOCASE と TCL_REG_NEWLINE と TCL_REG_NLSTOP と TCL_REG_NLANCH と TCL_REG_NOSUBR と TCL_REG_CANMATCH の旗印の論理和の組合わせ｡更なる情報は下を参照されたい｡　 OR-ed combination of the compilation flags TCL_REG_ADVANCED, TCL_REG_EXTENDED, TCL_REG_BASIC, TCL_REG_EXPANDED, TCL_REG_QUOTE, TCL_REG_NOCASE, TCL_REG_NEWLINE, TCL_REG_NLSTOP, TCL_REG_NLANCH, TCL_REG_NOSUB, and TCL_REG_CANMATCH. See below for more information.

int offset (入力in)
  合致が始まる文書内への偏倚｡偏倚の値は ^ 合致に影響しない｡この振舞いは旗印により制御される｡　 The character offset into the text where matching should begin. The value of the offset has no impact on ^ matches. This behavior is controlled by eflags.

int nmatches (入力in)
  合致する小表現は後の使用の為に記憶されるべき個数である｡もしこの値が 0 なら､どの小表現の合致情報も計算されない｡もし値が -1 なら､全ての小表現の合致が記憶される｡それ以外のどの値も､記憶すべき小表現の最大個数として扱われる｡　 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)
  TCL_REG_NOTBOL と TCL_REG_NOTEOLの実行旗印の論理和である｡更なる情報は下を参照されたい｡　 OR-ed combination of the execution flags TCL_REG_NOTBOL and TCL_REG_NOTEOL. See below for more information.

Tcl_RegExpInfo *infoPtr (出力out)
  Tcl_RegExpGetInfo により保存されるべき事前の合致に関する情報の場所への番地｡　 The address of the location where information about a previous match should be stored by Tcl_RegExpGetInfo.

### 説明 DESCRIPTION

Tcl_RegExpMatch はその pattern 引数が regexp に合致するかを定める､ここで regexp は re_syntax 参照頁内の規則を使う正規表現として解釈される｡もし合致があると､ Tcl_RegExpMatch は 1 を返す｡合致がないと Tcl_RegExpMatch は 0 を返す｡もし合致処理中に不都合が生じると(譬えば､ pattern が適切な正規表現ではない)､ Tcl_RegExpMatch は -1 を返し､解釈実行機能の結果に不都合伝言文を残す｡ Tcl_RegExpMatchObj は Tcl_RegExpMatch に似ているが､ UTF 文字列ではなく､ Tcl 対象の textObj と patObj を操作する｡ Tcl_RegExpMatchObj は一般には Tcl_RegExpMatch よりも効率がよいので､好まれる対話機能である｡ 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 values textObj 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 と Tcl_RegExpRange は低水準の正規表現紋様合致譜を提供する｡Tcl_RegExpCompile は効果的紋様合致の為に正規表現文字列を内部形式に翻訳する｡返される値は翻訳された形式の為の字句であり､それは引続く Tcl_RegExpExec や Tcl_RegExpRange の呼出しに使われ得る｡もし正規表現の翻訳中に不都合が生じると Tcl_RegExpCompile は NULL を返し解釈実行機能の結果に不都合伝言文を残す｡ 註意: Tcl_RegExpCompile からの返り値は､単に次の Tcl_RegExpCompile の呼出し迄適切なだけである; これらの値を長期の時間に返すことは安全ではない｡ 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 は正規表現紋様合致譜を実行する｡ text が regexp に合致する文字並びの範囲を含む場合 1 ､合致が発見できない場合は 0 ､不都合が生じた場合は -1 を返す｡不都合の場合､ Tcl_RegExpExec は解釈実行機能の結果内に不都合伝言文を残す｡多重の紋様の合致の為の文字列を捜索する時､元の文字列の開始部と現在の捜索の開始部との間の区別は重要である｡譬えば､合致の第２の事象の捜索の時に text 引数は最初の合致の直後の文字を指すはずである; しかし､紋様合致譜にとって重要なことはこれは全体の文字列の開始ではないことをしることであり､従って､合致の為の紋様内に “^” 基本単位は許容されない｡ text を含んでいる文字列全体の開始を指すことにより start 引数はこの情報を提供する｡ start は text より少ないか等しくなる; もし text より小さい場合 ^ の合致は許容されない｡ Tcl_RegExpExec executes the regular expression pattern matcher. It returns 1 if text 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 text 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 does not allow “^” atoms in the pattern to match. The start argument provides this information by pointing to the start of the overall string containing text. Start will be less than or equal to text; if it is less than text then no ^ matches will be allowed.

Tcl_RegExpRange は Tcl_RegExpExec から返った後に起動され得る; 紋様の部分に合致した文字列の範囲に関する詳細な情報を提供する｡Tcl_RegExpRange は *startPtr と *endPtr のポインターの対を返す､それは最も最近の Tcl_RegExpExec への呼出しについての元の文字列内の範囲を識別する｡index は幾つかの好ましい範囲を指し示す: もし index が 0 の場合､紋様全体に合致した文字並びの全体の範囲に関する情報が返される; それ以外では､情報は index 番目の括弧で括られた紋様内の副表現に合致する文字列並びの範囲に関して返される｡もし index に相当する範囲がない場合､ NULL が *startPtr と *endPtr に保存される｡ 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 は Henry Spencer の正規表現外部函数の最も直接的な制御を提供する対象相互作用である｡翻訳の修正と直接の選択肢の実施との必要性がある使用者にとって､内部正規表現函数を呼ぶ代りにこの様な相互作用を使うことを推奨する｡この様な相互作用は UTF からユニコードへの翻訳の詳細を扱うと同時に紋様と文字列値内の記憶域利用を通じての出来ばえの向上をもたらす｡ Tcl_GetRegExpFromObj, Tcl_RegExpExecObj, and Tcl_RegExpGetInfo are value 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 values.

Tcl_GetRegExpFromObj は patObj から言語翻訳された正規表現を返そうと試みる｡もし対象が既に言語翻訳された正規表現を含まない場合対象内の文字列からそれを生成しようと試み､ patObj の内部表現に代入する｡この函数の返り値は Tcl_RegExp 型である｡この言語翻訳された形式の為の字句解析であり､それは引続く Tcl_RegExpExecObj or Tcl_RegExpGetInfo への呼出しに使われる｡もし正規表現の言語翻訳の間に不都合が生じると､ Tcl_GetRegExpFromObj は NULL を返し､解釈実行機能の結果内に不都合伝言文を残す｡正規表現の字句解析は patObj の内部表現が言語翻訳された形式を参照している間は使用できる｡ cflags は零又は､ patObj の言語翻訳を制御する次の旗印との､ビットでの論理和である: Tcl_GetRegExpFromObj attempts to return a compiled regular expression from the patObj. If the value does not already contain a compiled regular expression it will attempt to create one from the string in the value 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 cflags argument is a bit-wise OR of zero or more of the following flags that control the compilation of patObj:

TCL_REG_ADVANCED
  ( “高級正規表現” 様式の)正規表現を言語翻訳する｡この様式は Tcl regexp と regsub 命令によって受入れられる通常の正規表現構文に相当する｡ Compile advanced regular expressions (“ARE”s). This mode corresponds to the normal regular expression syntax accepted by the Tcl regexp and regsub commands.

TCL_REG_EXTENDED
  “拡張正規表現” 様式の正規表現を言語翻訳する｡この様式は Tcl 8.0 とそれ以前の版によって受入れられる正規表現構文に相当する｡ Compile extended regular expressions (“ERE”s). This mode corresponds to the regular expression syntax recognized by Tcl 8.0 and earlier versions.

TCL_REG_BASIC
  “基本正規表現” 様式の正規表現を言語翻訳する｡この様式は sed や grep の様な通常の Unix 用の函数によって識別される正規表現構文に相当する｡旗印が指定されていない場合の省略時設定である｡ Compile basic regular expressions (“BRE”s). 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
  改行にも合致する翻訳をする｡省略時設定では改行は完全に普通の文字で正規表現でも文字列でも特別な意味はない｡この旗印では､ “[^” 角括弧表現と “.” は決して改行には合致しない､ “^” はどの通常の機能を持つ改行の後の空文字列にも合致する､そして “$” はどの通常の機能を持つ改行の前の空文字列にも合致する｡ REG_NEWLINE は REG_NLSTOP と REG_NLANCH. のビット水準での論理和である｡ 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 bit-wise OR of REG_NLSTOP and REG_NLANCH.

TCL_REG_NLSTOP
  “[^” 角括弧表現と “.” 効果を伴う､部分改行感知の合致で翻訳する､しかし､ “^” and “$” “[^” 角括弧表現と “.” 効果は改行と合致することはない｡ 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 “^” 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
  成功か失敗のみを報告し､何が合致したかは報告しない翻訳をする｡これは言語翻訳の諸経費を減じるそして出来ばえを増やす｡引続く Tcl_RegExpGetInfo や Tcl_RegExpRange への呼出しは何の合致の情報も報告しない｡ 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_EXTENDED と TCL_REG_ADVANCED と TCL_REG_BASIC と TCL_REG_QUOTE の内の一つだけを指定可能である｡ Only one of TCL_REG_EXTENDED, TCL_REG_ADVANCED, TCL_REG_BASIC, and TCL_REG_QUOTE may be specified.

Tcl_RegExpExecObj は正規表現紋様合致を遂行する｡ objPtr が regexp に合致する文字並びの範囲を含む場合 1 を返し､合致が見付らない場合は 0 ､不都合が起ると -1 を返す｡この不都合の場合､ Tcl_RegExpExecObj は解釈実行機能の結果内に不都合伝言文を残す｡ nmatches 値は合致譜に対し副表現が幾つ対象であるかを指し示す｡ nmatches が 0,の場合､副表現合致情報は記録されていない､これは､合致譜に種々の最適化をなすことを許容する｡もし値が -1 なら紋様内の全ての副表現は記憶されている｡値が正整数の場合､その数の副表現だけが記憶されることになる｡合致は offset によって与えられた索引の指定されたユニコード文字で始まる｡ Tcl_RegExpExec とは異なり､錨の挙動は､開始値によって影響されない｡代りに､錨の振舞いは eflags 引数により明示的に制御される､それは零かそれ以上の幾つかの次の旗印の､ビット水準の論理和の結合である: Tcl_RegExpExecObj executes the regular expression pattern matcher. It returns 1 if objPtr 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_RegExpExecObj leaves an error message in the interpreter result. The nmatches value indicates to the matcher how many subexpressions are of interest. If nmatches is 0, then no subexpression match information is recorded, which may allow the matcher to make various optimizations. If the value is -1, then all of the subexpressions in the pattern are remembered. If the value is a positive integer, then only that number of subexpressions will be remembered. Matching begins at the specified Unicode character index given by offset. Unlike Tcl_RegExpExec, the behavior of anchors is not affected by the offset value. Instead the behavior of the anchors is explicitly controlled by the eflags argument, which is a bit-wise OR of zero or more of the following flags:

TCL_REG_NOTBOL
  始まりの文字は行の開始や文書の開始としては扱われないので､ “^” は其処には合致しない｡註意すべきは､この旗印は “\A” が如何に合致するかには影響しないことである｡ 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
  末尾の文字は行の末尾や文書の末尾としては扱われないので､ “$” は其処には合致しない｡註意すべきは､この旗印は “\Z” が如何に合致するかには影響しないことである｡ 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.

Tcl_RegExpGetInfo は与えられた正規表現 regexp との最後の合致の遂行に関する情報を取戻す｡ infoPtr 引数は次のように定義された構造へのポインターを含む: Tcl_RegExpGetInfo retrieves information about the last match performed with a given regular expression regexp. The infoPtr argument contains a pointer to a structure that is defined as follows:

    typedef struct Tcl_RegExpInfo {
        int nsubs;
        Tcl_RegExpIndices *matches;
        long extendStart;
    } Tcl_RegExpInfo;

nsubs 欄は正規表現内部の括弧で括られた副表現の個数を含む｡もし TCL_REG_NOSUB が使われると､この値は零になる｡ matches 欄はそれぞれの合致した副表現の束縛を指し示す nsubs+1 値の配列を指す｡配列の初めの要素は正規表現全体によって合致された範囲を参照する､又､引き続く要素は紋様の中に現れた順に括弧で括られた副表現を参照する｡それぞれの要素は次のように定義された構造である: The nsubs field contains a count of the number of parenthesized subexpressions within the regular expression. If the TCL_REG_NOSUB was used, then this value will be zero. The matches field points to an array of nsubs+1 values that indicate the bounds of each subexpression matched. The first element in the array refers to the range matched by the entire regular expression, and subsequent elements refer to the parenthesized subexpressions in the order that they appear in the pattern. Each element is a structure that is defined as follows:

    typedef struct Tcl_RegExpIndices {
        long start;
        long end;
    } Tcl_RegExpIndices;

start と end 値はユニコード文字であり､合致が始まる偏寄位置の objPtr に相対的に索引される｡索引 start は副表現に合致する最初の文字を指し示す｡索引 end は合致した副表現の後の最初の文字を指し示す｡もしその副表現が空文字列に合致した場合､ start と end は等しくなる｡もし副表現が合致内に参加しない場合､ start と end は -1.になる｡ The start and end values are Unicode character indices relative to the offset location within objPtr where matching began. The start index identifies the first character of the matched subexpression. The end index identifies the first character after the matched subexpression. If the subexpression matched the empty string, then start and end will be equal. If the subexpression did not participate in the match, then start and end will be set to -1.

Tcl_RegExpInfo 内の extendStart 欄は､もし TCL_REG_CANMATCH 旗印が使われる場合のみ設定される｡それは文字列内の合致が生じ得る最初の文字を指し示す｡合致が見付ると､これは現在の合致の開始と同じになる｡合致しないことが判ると､もし追加文書が文字列に追記されると合致が生じるであろう､最も先頭側の位置を指し示す｡もし更なる文書でさえ非合致がありうると､その欄は -1 に設定される｡ The extendStart field in Tcl_RegExpInfo is only set if the TCL_REG_CANMATCH flag was used. It indicates the first character in the string where a match could occur. If a match was found, this will be the same as the beginning of the current match. If no match was found, then it indicates the earliest point at which a match might occur if additional text is appended to the string. If it is no match is possible even with further text, this field will be set to -1.

### SEE ALSO

re_syntax

### KEYWORDS

match, pattern, regular expression, string, subexpression, Tcl_RegExpIndices, Tcl_RegExpInfo
Copyright © 1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1998-1999 Scriptics Corporation