정규 표현식(일반적으로 REGEX 또는 REGEXP로 알려짐)은 특정 패턴과 일치하는 URL 또는 텍스트를 찾는 데 도움을 줍니다.
REGEX 작동 방식
간단한 예제에서 더 복잡한 예제로 이동해 봅시다.
다음 설정은 “blog”라는 단어를 포함하는 모든 URL을 포함하고 “product”라는 단어를 포함하는 URL을 제외합니다.
우리의 봇에게 아래를 크롤링하라는 지시입니다:
https://ahrefs.com/blog
https://ahrefs.com/blog/seo-techniques/
https://ahrefs.com/academy/blogging-for-business
다음은 무시합니다:
https://ahrefs.com/blog/category/product-blog/
https://ahrefs.com/blog/ecommerce-out-of-stock-products/
간단하죠?
그러나 /blog/ 하위 폴더의 URL만 포함하고 https://ahrefs.com/academy/blogging-for-business
는 제외하고 싶다면 어떻게 해야 할까요?
더 발전된 패턴을 사용할 수 있습니다:
아마 'blog' 앞뒤에 있는 기호들이 궁금하실 겁니다.
정규 표현식에서는 특별한 문자가 아닌 것으로 인식되도록 일부 기호를 ‘이스케이프’해야 합니다. 그렇게 하려면 해당 문자 앞에 백슬래시 \
를 사용하세요.
정규 표현식에서 간단한 점 .
은 임의의 문자를 나타냅니다. 그러나 \.
은 마침표 기호로 작동합니다. 바로 위 예시에서는 이렇게 슬래시 문자를 이스케이프했습니다: \/
Ahrefs에서 다중 REGEX 표현식 처리 방법
크롤 설정의 Site Audit에서 URL을 포함하거나 제외하기 위해 여러 패턴을 적용할 수 있습니다. 규칙 중 하나에 대한 일치 항목이 없는 경우 규칙이 건너뜁니다.
위의 규칙은 크롤러에게 다음 단어를 포함하는 URL을 크롤링하도록 지시합니다:
“블로그” 또는 “제품”
그리고 다음 단어를 포함하지 않는:
“블로깅” 또는 “생산적.”
여러 URL 재작성 규칙의 경우, 각 새로운 규칙은 이전 규칙의 결과에 순차적으로 실행됩니다.
유용한 정규 표현식 토큰
^
- 이 기호는 URL의 시작을 나타냅니다
$
- 이 기호는 URL의 끝을 나타냅니다
.
- 소수점은 임의의 단일 문자를 일치시킵니다
*
- 이전 표현을 0번 이상 일치시킴
+
- 이전 내용을 1번 이상 일치시킴
?
- 이전의 내용을 0번 혹은 1번 일치시킵니다
|
- OR에 해당합니다.
[__]
- |와 비슷하지만 범위를 정의하는 데 사용할 수 있습니다
(__)
- 괄호는 그 사이의 정규 표현식을 그룹화합니다
\d
- 1개의 숫자와 일치
\D
- 숫자가 아닌 단어와 일치
\w
- 단어 문자와 일치
\W
- 비 단어 문자와 일치
다양한 도구와 플랫폼이 서로 다른 정규식 라이브러리를 사용할 수 있습니다. 우리의 사이트 감사는 RE2를 사용합니다. 전체 문법을 여기서 확인할 수 있습니다.
몇 가지 실용적인 예
1. /wp-content/ 하위 폴더의 Https URL
^https:.*\/wp-content\/
^
URL의 시작을 나타냅니다. 이 규칙은 “https:”로 시작하여 “/wp-content/” 이전에 0개 이상의 문자.*
가 있을 수 있는 모든 URL과 일치합니다.
패턴과 일치하는 URL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
패턴과 일치하지 않는 URL:
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
2. 하위 폴더의 URL, 디렉토리 URL 포함.
\/blog(\/.*)?$
이 규칙은 “/blog”로 끝나는 모든 URL과 $
, 슬래시 및 0개 이상의 문자가 (\/.*)?
있을 수 있는 모든 URL과 일치합니다. 이 패턴의 물음표는 괄호 안의 표현식을 0번에서 1번까지 일치시키므로 옵션입니다.
패턴과 일치하는 URL:
https://ahrefs.com/blog
https://ahrefs.com/blog/301-redirects/
패턴과 일치하지 않는 URL:
https://ahrefs.com/blogging
https://ahrefs.com/academy/blogging-for-business
3. @ 또는 % 기호를 포함하는 URL
@|%
또는 [@%]
|
및 [__]
는 OR로 작동합니다
패턴과 일치하는 URL:
https://ahrefs.com/@timsoulo
https://ahrefs.com/%D1%81%D0%B5%D0%BE
패턴과 일치하지 않는 URL:
https://ahrefs.com/blog/nofollow-links
4. Woocommerce의 "Add to Cart" URL
\?add-to-cart=
?
가 정규 표현식에서 특별한 기호라는 점을 염두에 두세요. 단순 물음표로 사용하려면 이렇게 이스케이프해야 합니다: \?
패턴과 일치하는 URL:
https://yourdomain.com/?add-to-cart=25
패턴과 일치하지 않는 URL:
https://yourdomain.com/smartphones
5. 연도(4자리 숫자)를 포함하는 URL
[0-9]{4}
또는 \d{4}
[0-9]{4}
는 네 자릿수 숫자 {4}
를 포함하는 모든 URL과 일치합니다 [0-9]
.
\d{4}
는 \d
가 한 자리 숫자를 나타내므로 동일하게 작동합니다.
패턴과 일치하는 URL:
https://yourdomain.com/best-smartphones-2019
패턴과 일치하지 않는 URL:
https://yourdomain.com/smartphones
6. 하위 도메인의 모든 URL (http 및 https 둘 다)
^https?:\/\/help.ahrefs.com
이 규칙은 "http://help.ahrefs.com" 또는 "https://help.ahrefs.com"로 시작하는 모든 URL과 일치합니다.
여기의 물음표 s?
는 “s”가 옵션임을 나타내므로, http 및 https가 이 규칙과 일치합니다.
패턴과 일치하는 URL:
https://help.ahrefs.com
http://help.ahrefs.com/
http://help.ahrefs.com/site-audit
패턴과 일치하지 않는 URL:
https://ahrefs.com/site-audit
ftp://help.ahrefs.com
7. 다양한 파일 URL
\.(jpg|gif|bmp|png|css|pdf)$
이 규칙은 $
로 끝나는 .jpg OR .gif OR .bmp OR .png OR .css OR .pdf URL과 일치합니다.
확장자의 수를 줄이기 위해 이 표현식을 줄일 수 있습니다. 예를 들면, .jpg 또는 .png로 끝나는 URL만을 위한 경우:
.*\.(jpg|png)$
괄호 (__)
는 그 사이의 정규 표현식을 그룹화하고 |
는 OR로 작동합니다
패턴과 일치하는 URL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
패턴과 일치하지 않는 URL:
https://ahrefs.com/site-audit
8. Site Audit에서 스테이징 웹사이트를 크롤링하기 위한 URL 재작성 규칙 사용
사이트 감사 설정에서 URL 재작성 규칙을 사용하여 URL의 일부를 다른 값으로 대체할 수 있습니다.
E.g. 스테이징 웹사이트가 하위 도메인을 기반으로 하는 경우, 예: staging.ahrefs.com
이 규칙은 모든 URL에서 "ahrefs.com"을 "staging.ahrefs.com"으로 대체합니다.
9. 번호가 매겨진 캡처 그룹을 사용한 URL 재작성 규칙
캡처 그룹을 사용하면 한 규칙으로 URL의 여러 부분을 대체할 수 있습니다.
일치할 패턴:
www\.ahrefs\.com([^\?|#]*)?([#]?[^\?]*)\??(.*)
다음으로 교체:
www.ahrefs.com\1?parameter1=5273&\2?parameter2=7465&\3
([^\?|#]*)
는 1번째 캡처 그룹입니다
([#]?[^\?]*)
는 2번째 캡처 그룹입니다
(.*)
는 3번째 캡처 그룹입니다
\1?parameter1=5273&\2\3
첫 번째 캡처 그룹의 값을 "?parameter1=5273
"으로 대체합니다
\2?parameter2=7465&
는 두 번째 캡처 그룹의 값을 "?parameter2=7465&
"으로 대체합니다
\3
는 세 번째 캡처 그룹과 일치하는 값을 삽입합니다
6. 50자보다 긴 텍스트 필터링
^[\s\S]{50,}$
추가 자원
이 글이 정규 표현식을 활용하여 할 수 있는 멋진 방법 몇 가지를 배울 수 있도록 도와주기를 바랍니다.
이 웹사이트에서 정규 표현식을 테스트할 수 있습니다: https://regex101.com/. “Golang”을 왼쪽 메뉴에서 선택해야 한다는 점에 유의하세요.