정규표현식의 개념과 기초 문법

작성한지 10년이 지났는데도 notepad++ 관련한 키워드로 꾸준히 유입이 발생하고 있고,  그게 정규 표현식 관련한 글인데 별로 내용이 좋은 글이 아니다. (몇 가지 기초적인 문법만 요리책 식으로 나열해 놓은 거라…) 그래서 정규 표현식의 개념과 기초 문법 그리고 몇 가지 이 블로그에서 다루는 언어들에서 정규 표현식을 어떻게 쓰는지, 어떤 것들을 할 수 있는지 등에 대해서 알아볼 계획이다.

오늘은 그 첫 번째 순서로, 정규 표현식의 개념과 가장 기초가 되는 패턴 문법에 대해서 살펴보려고 한다.

정규표현식의 개념과 기초 문법 더보기

vim의 정규식 기호와 very magic 모드

vim의 문자열 검색, 치환 기능은 패턴 매칭에 의한 것이며, 이 패턴 매칭은 정규식에 기반을 두고 있다. 그런데 정규식 문법을 조금 알고 있는 상태에서 vim의 정규식을 사용하면 깊은 빡침을 느끼거나 심한 멀미를 겪을 수 있다. 왜냐하면 정규식은 딱히 하나의 정해진 표준도 없거니와 기능과 편의를 위해서 여러 갈래로 나뉘어져 있고 vim에서는 상황에 따라서 서로 다른 기준을 사용해서 패턴을 파싱하기 때문이다. 예를 하나 들어보자.

(this)isnot{this}nor[this]

이런 문자열이 있다고 할 때, 괄호들을 포함한 this를 검색, 즉 (this), {this}, [this]를 검색하려면 다음의 패턴을 사용한다. vim의 정규식 기호와 very magic 모드 더보기

[Python | Javascript] URI로부터 파일이름 구하기

자바스크립트와 파이썬 버전의 함수.

function getFilename(url)
{
	var pattern = /(^.*\/)([^&#?]*)/;
	var m = url.match(pattern);
	var filename = m[2];
	return filename;
}

 

import re

def getFilenameFromURL(url):
    pattern = "(^.*/)([^&#?]*)"
    c = re.compile(pattern)
    r = c.findall(url)
    return r[1]

 

 

현재 페이지의 URL에서 도메인 주소만 구하기

document.location.href 속성 값은 http://, https:// 로 시작하는 페이지의 전체 URI 정보를 나타낸다. 이 속성에 정규식을 매칭하여 도메인에 해당하는 부분만을 잘라낼 수 있다.

여기서 사용된 패턴은 다음과 같이 설명된다.

  1. http[s]:// 다음에 위치하며
  2. 도메인 뒤에는 문자열이 끝나거나 /,?,& 따위의 파라미터 연결자가 올 수 있다. 파라미터 연결자 앞까지를 끊어서 모든 문자를 매치한다.
document.location.href.match(/(?<=https?:\/\/)(.*?)(?=$|[\/?\&])/)[0]

20071111 : notepad++ 과 정규표현식

[update] : 정규식 관련하여 근 10년만에 기초적인 내용을 이 글보다 조금 더 체계적으로 정리한 포스트를 발행하였으니, 아래 글 보다는 새 글을 먼저 읽어 보실 것을 권합니다. 20071111 : notepad++ 과 정규표현식 더보기