정규식을 배울 가치가 있는 이유
잘 만들어진 정규식은 수동 문자열 구문 분석 코드 50줄을 대체할 수 있습니다. 마이크로초 단위로 실행됩니다. 거의 모든 프로그래밍 언어에서 작동합니다. 구문을 이해하고 나면 조건부 논리를 구현하는 데 몇 시간이 걸리는 패턴을 작성할 수 있습니다.
장벽은 개념이 아니라 표기법입니다. Regex는 언뜻 보면 횡설수설처럼 보이는 조밀하고 기호가 많은 구문을 사용합니다. 읽는 법을 배우면 이전에는 볼 수 없었던 코드, 데이터 및 텍스트의 패턴을 볼 수 있습니다.
필수 패턴 빠른 참조
| 무늬 | 성냥 | 예 |
|---|---|---|
\디 | 0~9의 임의의 숫자 | \d{4} → 2025 |
\w | 문자, 숫자 또는 밑줄 | \w+→ "hello_world" |
\에스 | 모든 공백 | \s+→ 하나 이상의 공백 |
^ / $ | 문자열 시작/끝 | ^\d{5}$→ 정확히 5자리 우편번호 |
[알파벳] | a, b, c 중 하나 | [아이오우]→ 모든 모음 |
[^abc] | a, b, c를 제외한 모든 것 | [^\d]→ 숫자가 아닌 |
? | 이전 항목 중 0 또는 1개 | 색상→ 색상 또는 색상 |
+ | 1개 이상 | \d+→ 하나 이상의 숫자 |
* | 0 이상 | \디*→ 0개 이상의 숫자 |
{n,m} | n회에서 m회 사이 | \d{3,5}→ 3~5자리 |
북마크할 가치가 있는 패턴
- 이메일:
/^[\w.+-]+@[\w-]+\.[a-z]{2,}$/i - URL 추출:
/https?:\/\/[^\s"'<>]+/g - 추가 공백을 제거합니다.
/\s+/g→ 단일 공백으로 교체 - 해시태그 추출:
/#[\w]+/g - 전체 단어만 일치:
/\b단어\b/
💡 전문가 팁:사용
g모든 일치 항목(첫 번째 항목뿐만 아니라)을 찾는 플래그나대소문자를 구분하지 않는 일치의 경우중만들다^그리고$문자열 경계 대신 줄 경계를 일치시킵니다. 대부분의 실제 정규식 패턴에는 최소한g또는나."파국적 역추적"이란 무엇입니까?
다음과 같은 패턴(a+)+일치하지 않는 긴 문자열에 적용하면 기하급수적인 처리 시간이 발생합니다. 정규식 엔진은 기하급수적으로 더 많은 조합을 시도하면서 중단됩니다. 겹치는 패턴에 중첩된 수량자를 피하세요. 패턴(a+)+b"aaaaaaaaaaaaaaac"에서는 서버가 중단됩니다.
JavaScript 정규식은 Python과 동일하게 작동합니까?
대부분 그렇습니다. 이름이 지정된 그룹에는 차이가 있습니다(JS는(?<이름>), Python은 다음을 사용합니다.(?P<이름>)), 일부 미리보기/뒤돌아보기 기능 및 문자 클래스 표기법이 있습니다. 이 테스터는 JavaScript 엔진을 사용합니다. 동작이 다른 경우 대상 언어로 테스트합니다.