## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > lsearch

### 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
    lsearch — リストに特定の要素が含まれてないか調べる See if a list contains a particular element
  構文 SYNOPSIS
  説明 DESCRIPTION
  合致様式指定 MATCHING STYLE OPTIONS
    -exact
    -glob
    -regexp
    -sorted
  一般修正指定 GENERAL MODIFIER OPTIONS
    -all
    -inline
    -not
    -start index
  内容記述指定 CONTENTS DESCRIPTION OPTIONS
    -ascii
    -dictionary
    -integer
    -nocase
    -real
  整列リスト指定 SORTED LIST OPTIONS
    -decreasing
    -increasing
    -bisect
  入れ子になったリストへの指定 NESTED LIST OPTIONS
    -stride strideLength
    -index indexList
    -subindices
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

lsearch — リストに特定の要素が含まれてないか調べる See if a list contains a particular element

### 構文 SYNOPSIS

lsearch ?options? list pattern

### 説明 DESCRIPTION

この命令はリスト list の要素を捜索し､その内の一つが紋様 pattern に合致するかを調べる｡もし､そうであれば､本命令は(-all や -inline 指示項目が指定されていない限り)最初に合致する要素の番号を返す｡なければ､本命令は -1 か(指示項目 -all や -inline が指定された時は)空文字列を返す｡指示項目引数 option はリストの要素が紋様に対して如何に合致するかを指し示し､下記の値のどれか一つでなければならない: This command searches the elements of list to see if one of them matches pattern. If so, the command returns the index of the first matching element (unless the options -all or -inline are specified.) If not, the command returns -1 or (if options -all or -inline are specified) the empty string. The option arguments indicates how the elements of the list are to be matched against pattern and must have one of the values below:

#### 合致様式指定 MATCHING STYLE OPTIONS

合致様式の指定が全て省略された時の省略時設定の合致様式は -glob である｡複数個の合致様式が指定されている時は､最後の合致様式が優先される｡ If all matching style options are omitted, the default matching style is -glob. If more than one matching style is specified, the last matching style given takes precedence.

-exact
  pattern は文字列そのもので､リストの各要素と正確に等しいか比較される｡ Pattern is a literal string that is compared for exact equality against each list element.

-glob
  pattern は展開形式( glob-style )であり､ string match 命令と同じ規則を使ってリストの各要素と比較される｡ Pattern is a glob-style pattern which is matched against each list element using the same rules as the string match command.

-regexp
  pattern は正規表現として扱われ､ re_syntax に拘る頁に述べられる規則を使ってリストの各要素に合致比較される｡ [訳註:この様式が指定されると､多くの場合､pattern は"^"と"$"で前後を挟むことを要す｡] Pattern is treated as a regular expression and matched against each list element using the rules described in the re_syntax reference page.

-sorted
  この場合､リストの要素は昇順に揃って並んでいる｡この指示項目が指定されていると list の調査に効率的な調査手法が使われる｡これ以外の指示項目が指定されていないと､ list は漸増する順序に揃えられ､且つASCII 文字列を含んでいると仮定される｡この指示項目は､ -glob とも -regexp とも両立できない､又､ -all か -not かが指定されていると -exact の指定の様に厳密に扱われる｡ The list elements are in sorted order. If this option is specified, lsearch will use a more efficient searching algorithm to search list. If no other options are specified, list is assumed to be sorted in increasing order, and to contain ASCII strings. This option is mutually exclusive with -glob and -regexp, and is treated exactly like -exact when either -all or -not are specified.

#### 一般修正指定 GENERAL MODIFIER OPTIONS

これらの指示項目は全ての合致様式と組み合わせられる｡ These options may be given with all matching styles.

-all
  結果が､合致する番号全部(もし -inline も同時に指定されていると､合致している値全部)のリストになるよう変更する｡もし､複数の番号が戻される時は､その番号は数値の昇順に並ぶ｡もし複数の値が戻される場合､その値の順序は､入力した list の中の並び順になる｡ Changes the result to be the list of all matching indices (or all matching values if -inline is specified as well.) If indices are returned, the indices will be in ascending numeric order. If values are returned, the order of the values will be the order of those values within the input list.

-inline
  合致した番号ではなく合致した値(どの値も合致しない時は空文字列)が返される｡ 一緒に -all も指定されていると､この命令の戻値は合致した全ての値のリストになる｡ The matching value is returned instead of its index (or an empty string if no value matches.) If -all is also specified, then the result of the command is the list of all values that matched.

-not
  合致の意味を否定し､リスト中の最初の合致しない値の番号を戻す｡ 　　　　　　　　 This negates the sense of the match, returning the index of the first non-matching value in the list.

-start index
  リストは index の位置から調査が開始される｡ index の値の解釈は string index 命令と同じであり､リスト番号の単純な演算と､end からの相対番号に対応している｡ The list is searched starting at position index. The interpretation of the index value is the same as for the command string index, supporting simple index arithmetic and indices relative to the end of the list.

#### 内容記述指定 CONTENTS DESCRIPTION OPTIONS

これらの指示項目は､捜索時にリスト中の各要素がどの様に解釈されるかを記述している｡これら指示項目は､ -exact 及び -sorted 指示項目と共に使用するときにのみ意味がある｡ 複数個が指定された場合は後の指定が優先される｡ 省略時指定は -ascii である｡　　　　　 These options describe how to interpret the items in the list being searched. They are only meaningful when used with the -exact and -sorted options. If more than one is specified, the last one takes precedence. The default is -ascii.

-ascii
  リストの要素はユニコードの文字列として調べられる(名称は旧版との互換性を保つ為｡) The list elements are to be examined as Unicode strings (the name is for backward-compatibility reasons.)

-dictionary
  リストの要素は辞書式の比較法を使って比較される(より完全な記述は lsort の項を参照のこと)｡註意 これは､-sorted 指示項目が与えられた下で､ -ascii 指示項目との違いにのみ存在意義がある､理由は､厳密に合致する時､値は辞書式合致のみであるから｡ The list elements are to be compared using dictionary-style comparisons (see lsort for a fuller description). Note that this only makes a meaningful difference from the -ascii option when the -sorted option is given, because values are only dictionary-equal when exactly equal.

-integer
  リスト要素は整数として比較される｡ The list elements are to be compared as integers.

-nocase
  大文字小文字を区別しない方法で扱われる比較を惹き起こす｡ -dictionary や -integer や -real 指示項目と併用される場合は特段の効果はない｡ 　　　　　　　　　　　 Causes comparisons to be handled in a case-insensitive manner. Has no effect if combined with the -dictionary, -integer, or -real options.

-real
  リスト要素は浮動少数値として比較される｡ 　　　　　　　　 The list elements are to be compared as floating-point values.

#### 整列リスト指定 SORTED LIST OPTIONS

これらの指示項目は( -sorted 指示項目と一緒に使う時のみ意味がある) リストがどの様に整列されているかを指定する｡複数個与えられると最後の指定が優先される｡省略時指定は -increasing である｡ 　　　　　　 These options (only meaningful with the -sorted option) specify how the list is sorted. If more than one is given, the last one takes precedence. The default option is -increasing.

-decreasing
  リストの要素は漸減する順で並んでいる｡この指示項目は -sorted と一緒に使われる時のみ意味がある｡ 　　　　　 The list elements are sorted in decreasing order. This option is only meaningful when used with -sorted.

-increasing
  リストの要素は漸増する順で並んでいる｡この指示項目は -sorted と一緒に使われる時のみ意味がある｡ 　　　　　　　　　　 The list elements are sorted in increasing order. This option is only meaningful when used with -sorted.

-bisect
  リストの要素が値順に整列されている時､分割位置を捜索する｡漸増リストに就いては､紋様より小さいか等しい要素の中の最後の要素の索引番号が返される｡漸減リストに就いては､紋様より大きいか等しい要素の中の最後の要素の索引番号が返される｡もし紋様が最初の要素より前であるかリストが空の時 -1 が返される｡この指示項目は -sorted が強制され､ -all や -not と一緒に使うことはできない｡ 　　　　　　 Inexact search when the list elements are in sorted order. For an increasing list the last index where the element is less than or equal to the pattern is returned. For a decreasing list the last index where the element is greater than or equal to the pattern is returned. If the pattern is before the first element or the list is empty, -1 is returned. This option implies -sorted and cannot be used with either -all or -not.

#### 入れ子になったリストへの指定 NESTED LIST OPTIONS

これらの指示項目はリストのリストを捜す時に使われる｡他のどの指示項目とも併用できる｡ 　　　　　　　 These options are used to search lists of lists. They may be used with any other options.

-stride strideLength
  もしこの指示項目が指定されると､リストは strideLength 要素の群から構成されているとして扱われ､群はその最初の要素か､ -index 指示項目が使われる場合は､各群の内から -index に渡される最初の索引(それは -index により無視される)で与えられる要素が､捜索される｡結果の索引は､常に群の最初の要素を指す｡ If this option is specified, the list is treated as consisting of groups of strideLength elements and the groups are searched by either their first element or, if the -index option is used, by the element within each group given by the first index passed to -index (which is then ignored by -index). The resulting index always points to the first element in a group.

リストの長さは strideLength の整数倍でなければならない､strideLength の方は､最低限は 1 でなければならない｡1 の strideLength が無為設定であって群なしを指定している｡ The list length must be an integer multiple of strideLength, which in turn must be at least 1. A strideLength of 1 is the default and indicates no grouping.

-index indexList
  この指示項目は入れ子になったリストの中を捜すためのものである｡ indexList 引数には､その中の各要素が合致を調べるべき肝心の項目の場所を与える様な､位置の道筋( lindex や lset 命令でもっとよく使われる)を与える｡(訳註 捜索中に､指定した索引よりも索引の要素が少ない仔リストに遭うと､「仔リスト “” には索引番号0がないelement 0 missing from sublist “” 」の様な不都合伝言文を返す｡) 　　　　This option is designed for use when searching within nested lists. The indexList argument gives a path of indices (much as might be used with the lindex or lset commands) within each element to allow the location of the term being matched against.

-subindices
  もしこの指示項目が与えられていると､この命令から戻る位置の値は､見つけた要素の位置( -all をも指定している時は見つけた全部の要素の位置)に至る全リスト内の完全な道筋(lindex や lset にも使用可能の)になる｡この指示項目は -index をも同時に指定しないと効果が無い､又､便利な短縮記述法も使える｡ If this option is given, the index result from this command (or every index result when -all is also specified) will be a complete path (suitable for use with lindex or lset) within the overall list to the term found. This option has no effect unless the -index is also specified, and is just a convenience short-cut.

### 用例 EXAMPLES

基本的な捜索: Basic searching:

    lsearch {a b c d e} c
          → 2
    lsearch -all {a b c a b c} c
          → 2 5

リストの篩に lsearch を使う: Using lsearch to filter lists:

    lsearch -inline {a20 b35 c47} b*
          → b35
    lsearch -inline -not {a20 b35 c47} b*
          → a20
    lsearch -all -inline -not {a20 b35 c47} b*
          → a20 c47
    lsearch -all -not {a20 b35 c47} b*
          → 0 2

恰も “粋な” 削除演算の様に振舞うことも可能である: 　　　　　 This can even do a “set-like” removal operation:

    lsearch -all -inline -not -exact {a b c a d e a f g a} a
          → b c d e f g

リストの途中から捜すこともできる: 　　　 Searching may start part-way through the list:

    lsearch -start 3 {a b c a b c} c
          → 5

奥に入った要素を捜すことも出来る: 　　　 It is also possible to search inside elements:

    lsearch -index 1 -all -inline {{a abc} {b bcd} {c cde}} *bc*
          → {a abc} {b bcd}

同じ事を平板なリストに: The same thing for a flattened list:

    lsearch -stride 2 -index 1 -all -inline {abc abc abc bcd abc cde} *bc*
          → abc abc abc bcd

### SEE ALSO

foreach, list, lappend, lassign, ledit, lindex, linsert, llength, lmap, lpop, lrange, lremove, lrepeat, lreplace, lreverse, lseq, lset, lsort, string

### KEYWORDS

binary search, linear search, list, match, pattern, regular expression, search, string
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 2001 Kevin B. Kenny <kennykb(at)acm.org>. All rights reserved.
Copyright © 2003-2004 Donal K. Fellows.