Skip to content

lsearch

Searches a list for elements matching a pattern and returns their indices or values.

Syntax

tcl
lsearch ?options? list pattern

Parameters

  • list: The list to search
  • pattern: The pattern to match against

Options

Match type

  • -exact: Exact string match (default)
  • -glob: Glob-style pattern matching
  • -regexp: Regular expression matching

Data type

  • -ascii: Compare as strings (default)
  • -dictionary: Dictionary-style comparison (handles embedded numbers naturally, e.g., "a2" < "a10")
  • -integer: Compare as integers
  • -real: Compare as floating-point numbers

Sort order (for -sorted)

  • -sorted: List is sorted, use binary search
  • -increasing: Ascending order (default with -sorted)
  • -decreasing: Descending order
  • -bisect: Return index of last element less than or equal to pattern (for sorted lists)

Result control

  • -all: Return all matching indices
  • -inline: Return matching values instead of indices
  • -not: Return elements that do NOT match the pattern
  • -start index: Start searching at index (supports end, end-N, and arithmetic expressions like 0+1)

Element selection

  • -index indexList: Compare against a specific element within each list item. Can be a single index or a nested index list (e.g., -index {0 1} for deep access)
  • -subindices: Return full index path to matched element (requires -index)
  • -stride count: Treat list as groups of count elements, searching only the first element of each group

Modifiers

  • -nocase: Case-insensitive matching

Examples

Find first occurrence

Output

Find all occurrences

Output

Get matching values with -inline

Output
Output

Search sorted list

Output

Start from index

Output

Not found returns -1

Output

Find non-matching elements with -not

Output

Search by element index with -index

Output

Search strided lists with -stride

Output

Find insertion point with -bisect

Output

Dictionary-style comparison

Output

Using end-N index expressions

Output

See Also