Peter Cho

[손에 잡히는 정규표현식] 역참조/전방탐색/후방탐색

2018.12.06 | 1 Minute Read

8장 역참조 사용하기

역참조는 정규 표현식 패턴으로, 앞서 일치한 부분을 다시 가리킵니다.

검색

시작태그와 종료태그를 찾을 때 역참조를 사용하면 유용합니다.

`<body>
<h1>Welcome to my Website</h1>
<h2>ColdFusion</h1>
<H3>Wireless</h3>
</body>`.match(/<[hH][1-6]>.*?<\/[hH][1-6]>/g);

시작태그와 종료태그가 다른이름인데도 일치되어 검색되었습니다. 하지만 종료태그가 다른 태그를 찾는 것은 의도와 다를 것입니다.

[
  "<h1>Welcome to my Website</h1>",
  "<h2>ColdFusion</h1>",
  "<H3>Wireless</h3>"
]

역참조를 사용하면 하위표현식에 일치한 부분을 찾아 사용할 수 있습니다.

`
<body>
<h1>Welcome to my Website</h1>
<h2>ColdFusion</h1>
<H3>Wireless</h3>
</body>
`.match(/<([hH][1-6])>.*?<\/\1>/g);
// ["<h1>Welcome to my Website</h1>"]

치환

치환을 할 때도 역참조를 사용할 수 있습니다.

`Hello, ben@forta.com is my email address.`
  .replace(/(\w+\@\w+\.\w+)/, '<a href="mailto:$1">$1</a>')
// "Hello, <a href="mailto:ben@forta.com">ben@forta.com</a> is my email address."

9장 전방탐색과 후방탐색

전방탐색 - 앞으로 찾기

전방탐색(lookahead) 패턴은 일치 영역을 발견해도 그 값을 반환하지 않는 패턴을 말합니다. 전방탐색은 실제로는 하위 표현식이며, 하위 표현식과 같은 형식으로 작성합니다. 전방탐색 패턴의 구문은 ?=로 시작하고 등호(=) 다음에 일치할 텍스트가 오는 하위 표현식힙니다.

`
http://www.google.com
https://www.naver.com
ftp://file.net
`.match(/.+(?=:)/g)
// ['http', 'https', 'ftp']

후방탐색 - 뒤로 찾기

후방탐색(lookbehind) 패턴의 구문은 ?<=로 시작하고 등호(=) 다음에 일치할 텍스트가 오는 하위 표현식입니다.

`
Apple : $3.45
Orange : $2.63
Banana : $6.33
`.match(/(?<=\$)[0-9.]+/g)
// ["3.45", "2.63", "6.33"]

전방탐색과 후방탐색 함께 사용하기

`<body>
<h1>Welcome to my Website</h1>
<h2>ColdFusion</h2>
<h3>Wireless</h3>
</body>`.match(/(?<=\<h1\>).*?(?=\<\/h1\>)/g);
// ["Welcome to my Website"]