9장: 문자열, string

1. string 명령어

string 명령어는 문자열 조작을 위한 다양한 서브커맨드를 제공합니다.

regular expression은 문자열 작업을 위해 매우 중요하고, 퇴근 시간을 앞당길 수 있는 기술입니다. :)

1.1 주요 string 서브커맨드

  • length: 문자열 길이 반환

  • index: 특정 인덱스의 문자 반환

  • range: 특정 범위의 부분 문자열 반환

  • tolower/toupper: 소문자/대문자 변환

  • trim/trimleft/trimright: 공백 또는 지정 문자 제거

  • map: 문자 매핑

  • replace: 부분 문자열 대체

  • match: 글로브 패턴 매칭

1.2 사용 예시

set str "Hello, World!"

puts [string length $str]        # 13
puts [string index $str 7]       # W
puts [string range $str 0 4]     # Hello
puts [string tolower $str]       # hello, world!
puts [string trim "  abc  "]     # abc
puts [string map {o 0 l 1} $str] # He110, W0r1d!
puts [string replace $str 0 4 "Hi"] # Hi, World!
puts [string match "H*d!" $str]  # 1 (true)

2. regexp 명령어

regexp는 정규 표현식을 사용한 패턴 매칭을 수행합니다.

2.1 기본 구문

regexp 옵션 패턴 문자열 매치변수 서브매치변수1 서브매치변수2 ...

2.2 주요 옵션

  • -nocase: 대소문자 구분 없이 매칭

2.3 사용 예시

set str "The quick brown fox"

if {[regexp {(\w+)\s+(\w+)} $str -> first second]} {
    puts "First word: $first, Second word: $second"
}

regexp -nocase {fox} $str match
puts $match  # fox

regexp {(\d+)} "Age: 30" -> age
puts $age  # 30

3. regsub 명령어

regsub는 정규 표현식을 사용하여 문자열 내의 패턴을 대체합니다.

3.1 기본 구문

regsub 옵션 패턴 문자열 대체문자열 결과저장변수

3.2 주요 옵션

  • -all: 모든 매치를 대체

  • -nocase: 대소문자 구분 없이 매칭

3.3 사용 예시

set str "The quick brown fox jumps over the lazy dog"

regsub {(\w+) (\w+)} $str {\2 \1} result
puts $result  # quick The brown fox jumps over the lazy dog

regsub -all {\w+} $str {[\0]} result
puts $result  # [The] [quick] [brown] [fox] [jumps] [over] [the] [lazy] [dog]

regsub -nocase -all {o} $str "0" result
puts $result  # The quick br0wn f0x jumps 0ver the lazy d0g

4. 정규 표현식 기본 문법

이보다 더 많은 정규 표현식이 있지만, 이 규칙으로 대부분의 처리를 할 수 있습니다.

regular expression은 매우 중요하니, 이것에 대해 자유로워질 때까지 학습하는 것을 추천합니다.

  • .: 임의의 한 문자

  • ^: 행의 시작

  • $: 행의 끝

  • *: 앞 규칙 0회 이상 반복

  • \d: 숫자

  • \w: 단어 문자 (알파벳, 숫자, 밑줄)

  • \s: 공백 문자

5. 팁과 요령 💡

  • string 명령어는 간단한 문자열 조작에 효율적입니다.

  • 복잡한 패턴 매칭이나 대체가 필요할 때는 regexp와 regsub을 사용하세요.

  • 정규 표현식은 강력하지만 복잡할 수 있습니다. 가독성을 위해 복잡한 패턴은 주석을 달거나 분리하세요.

Last updated