[Linux]알아두면 강력한 문자열 정규표현식(Regular Expression 또는 Regex)

문자열 정규표현식(Regular Expression 또는 Regex)은 문자열 패턴을 검색하고 매치시키기 위한 강력한 도구입니다. 특정 문자열 패턴을 정의하고, 이 패턴을 검색하거나 추출하거나 치환하는 데 사용되며, 파일 검색, 문자열 검색 및 대체, 데이터 유효성 검사 등 다양한 용도로 활용됩니다. 정규표현식은 다양한 도구와 언어에서 사용되며, 예를 들어, grep, sed, awk, Python의 re 모듈 등에서 정규표현식을 사용하여 텍스트 처리를 수행할 수 있습니다. 정규표현식을 배우고 숙달하면 문자열 처리 작업을 효과적으로 수행할 수 있습니다.

아래 나열된 일반 규칙을 조합해서 사용하면 됩니다.

  1. 마침표(.): 마침표는 어떤 문자 하나와 일치합니다.
    • “a.p”는 “app”, “aap”, “abp” 등과 일치합니다.
  2. 문자 클래스([]): 대괄호 안에 문자 집합을 나열할 수 있습니다.
    • “[aeiou]”는 모음 문자 중 하나와 일치합니다.
    • “[a-zA-Z]” 또는 “[[:alpha:]]”는 알파벳과 일치합니다.
    • “[0-9]” 또는 “[[:digit:]]”는 0에서 9 사이의 숫자와 일치합니다.
  3. 반복자(+, *, ?): 반복자는 앞의 요소를 특정 횟수만큼 반복합니다.
    • +: 1회 이상의 반복. “ba+n”는 “ban”, “baaan”과 일치합니다.
    • *: 0회 이상의 반복. “ba*n”은 “bn”, “ban”, “baaan”과 일치합니다.
    • ?: 0회 또는 1회 반복. “colou?r”는 “color”와 “colour”와 일치합니다.
  4. 앵커(^, $, \<, \>): 앵커는 문자열의 시작 또는 끝을 나타냅니다.
    • ^: 문자열의 시작과 일치합니다. 예: “^yes”는 “yes”로 시작하는 문자열과 일치합니다.
    • $: 문자열의 끝과 일치합니다. 예: “xyz$”는 “xyz”로 끝나는 문자열과 일치합니다.
    • “\< : 단어가 시작하는 문자열과 일치합니다. 예: "\ful"는 "fully"와 일치합니다.
    • “\>” : 단어가 끝나는 문자열과 일치합니다. 예: “ful\>”는 “powerful”과 일치합니다.
  5. 그룹화(()): 괄호를 사용하여 일련의 문자를 그룹화할 수 있습니다. 그룹은 괄호 안에서 다른 패턴을 적용할 수 있습니다.
    • “(ab)+”는 “ab”, “abab”, “ababab” 등과 일치합니다.
    • th(e|is|at)는 the, this, that과 같은 문자열과 일치합니다.
  6. 반복횟수({ }): { }에 반복 횟수를 지정하여 일치하는 패턴을 찾을 수 있습니다.
    • {n}: 지정한 숫자만큼 정확히 반복. o{2}: pole은 일치하지 않지만, pool은 일치합니다. fooood에서는 처음 두 개의 o와 일치합니다.
    • {n,} : 지정한 숫자 이상으로 반복. o{3,}: food는 일치하지 않지만, foooood는 처음 세 개 이상의 o와 일치합니다.
    • {n, m}: 최소 n번, 최대 m번까지 반복. o{3,4} : gooooooogle는 처음 네 개의 o와 나머지 세 개의 o와 일치합니다.
  7. 메타문자(\메타문자): 일부 문자 앞에 백슬래시를 사용하여 메타문자로서의 의미를 제거할 수 있습니다. 예: “\.”은 실제 마침표 문자(.)와 일치합니다.
  8. 파이프(|):
    파이프는 OR 조건을 나타냅니다. 예: “apple|orange”는 “apple” 또는 “orange”와 일치합니다.
  9. 특수 문자 클래스
    • \b: 패턴의 앞뒤에 붙여서 단어 경계를 나타내는 메타문자, grep의 -w 옵션과 동일
    • \n: new line
    • \r: carriage return
    • \t: tab character.
아래는 가끔 사용하게 되는 정규표현식 패턴입니다.
IP_ADDRESS="([0-9]{1,3}\.){3}[0-9]{1,3}" EMAIL="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+" PHONE="(\([0-9]{2,3}\)|[0-9]{2,3}-)[0-9]{3,4}-[0-9]{4}" DATE="([0-9]{2}|[0-9]{4})(\/|-)[0-9]{1,2}(\/|-)[0-9]{1,2}" URL="(http|https)\:\/\/([a-zA-Z0-9_]+\.){1,2}[a-zA-Z0-9_]+" CREDIT_CARD="([0-9]{4}-){3}[0-9]{4}"

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다