정규 표현식 문법 빠른 참조표

정규 표현식은 개별 문자를 필드로 사용하기 위해, 또는 문자열을 확인하기 위해 광범위하게 사용됩니다. 이 또한 Unix에서 시작되어 여러 프로그래밍 언어(예: Scala, PHP, C#, Java, C++, Objective-c, Perl, Swift, VBScript, JavaScript, Ruby 및 Python 등)에서 널리 사용됩니다. 정규 표현식을 배우는 것은 문자열을 다루기 위한 효과적인 방법을 배운다는 것을 의미합니다.
정규 문자 설명
\ 다음 문자를 특별한 문자, 원래 문자, 역참조, 혹은 8진수 이스케이프 기호로 표시합니다. 예를 들어, “n"은 문자"n"과 일치합니다. "\n"은 줄 바꿈 문자와 일치합니다. "\\"은"\"와 일치하고 "\("은"("와 일치합니다.
^ 입력 문자열의 시작 위치와 일치합니다. RegExp 객체의 Multiline 속성이 설정된 경우 ^는 “\n" 또는 "\r" 다음의 위치도 일치합니다.
$ 입력 문자열의 끝 위치와 일치합니다. RegExp 객체의 Multiline 속성이 설정된 경우 $는 “\n" 또는 "\r" 이전의 위치도 일치합니다.
* 앞의 서브 표현식에 대해 0번 이상 일치합니다. 예를 들어, "zo*"는 “z" 및 "zoo"와 일치합니다. *는 {0,}과 같습니다.
+ 앞의 서브 표현식에 대해 1번 이상 일치합니다. 예를 들어, “zo+"는 "zo" 및 "zoo"와 일치하지만 "z"와는 일치하지 않습니다. +는 {1,}과 같습니다.
? 앞의 서브 표현식에 대해 0번 또는 1번 일치합니다. 예를 들어, “do(es)?"는 "does" 또는 "does"의 "do"와 일치합니다. ?는 {0,1}와 같습니다.
{n} n은 비부정 정수입니다. 특정한 n 회와 일치합니다. 예를 들어, “o{2}"는 "Bob"의 "o"와 일치하지 않지만, "food"의 두 개의 o와 일치합니다.
{n,} n은 비부정 정수입니다. 최소한 n 번 이상 일치합니다. 예를 들어, “o{2,}"는 "Bob"의 "o"와 일치하지 않지만, "foooood"의 모든 o와 일치합니다. "o{1,}"는 "o+"와 같으며, "o{0,}"는 "o*"와 같습니다.
{n,m} mn은 모두 비부정 정수이며, n <= m여야 합니다. 최소 n 번 이상 일치하고 최대 m 번 이하로 일치합니다. 예를 들어, “o{1,3}"는 "fooooood"의 처음 세 개의 o에 일치합니다. "o{0,1}"는 "o?"와 같으며, 조건 사이에 공백이 없어야 합니다.
? 문자가 다른 제한자(*,+,?,{n},{n,},{n,m}) 뒤에 있을 경우 일치하는 패턴은 비탐욕적입니다. 비탐욕적 모드는 검색하려는 문자열을 가능한 한 적게 일치시키고 기본적으로 탐욕적 모드는 가능한 한 많이 일치시킵니다. 예를 들어, 문자열 “oooo"에 대해서 "o+?"는 단일 "o"와 일치하고 "o+"는 모든 "o"와 일치합니다.
. 문자 "“\n"을 제외한 모든 단일 문자와 일치합니다. "(.|\n)" 패턴과 같이 “\n"을 포함한 모든 문자와 일치하려면 사용합니다.
(pattern) 패턴과 일치하고 이 매칭 결과를 잡아냅니다. 얻은 일치는 생성된 Matches 컬렉션에서 얻을 수 있으며, VBScript에서 SubMatches 컬렉션을 사용하고 JScript에서는 $0...$9 속성을 사용합니다. 괄호 문자를 일치시키려면 “\(" 또는 "\)"를 사용합니다.
(?:pattern) 패턴과 일치하지만 일치한 결과를 가져오지 않으며, 즉 비취득 매칭입니다. 이는 OR 기호 “(|)"를 사용하여 패턴의 각 부분을 조합하는 데 유용합니다. 예를 들면 "industr(?:y|ies)"는 "industry|industries"보다 더 간결한 표현식입니다.
(?=pattern) 정방향 긍정 예측일치로, 패턴과 일치하는 문자열의 시작 부분에서 검색 문자열을 일치시킵니다. 이는 비취득 매칭이므로, 이 매칭은 이후에 사용하기 위해서 가져올 필요가 없습니다. 예를 들어, “Windows(?=95|98|NT|2000)"는 "Windows2000"의 "Windows"와 일치하지만 "Windows3.1"의 "Windows"와 일치하지 않습니다. 예측 일치는 문자를 소비하지 않으며, 매칭이 발생한 후, 마지막 매칭 후 즉시 다음 매칭의 검색을 시작하여, 예측을 포함한 문자 다음에서 시작하지 않습니다.
(?!pattern) 정방향 부정 예측일치로, 패턴과 일치하지 않는 문자열의 시작 부분에서 검색 문자열을 일치시킵니다. 이는 비취득 매칭이므로, 이 매칭은 이후에 사용하기 위해서 가져올 필요가 없습니다. 예를 들어 “Windows(?!95|98|NT|2000)"는 "Windows3.1"의 "Windows"와 일치하지만 "Windows2000"의 "Windows"와는 일치하지 않습니다. 예측 일치는 문자를 소비하지 않으며, 이후의 매칭에 대해 매칭이 발생한 후 마지막으로 매칭 한 뒤 즉시 다음 매칭의 검색을 시작합니다.
(?<=pattern) 역방향 긍정 예측일치로, 정방향 긍정 예측일치와 비슷하지만 방향이 반대입니다. 예를 들어, “(?<=95|98|NT|2000)Windows"는 "2000Windows"의 "Windows"와 일치하지만 "3.1Windows"의 "Windows"와 일치하지 않습니다.
(? 역방향 부정 예측일치로, 정방향 부정 예측일치와 비슷하지만 방향이 반대입니다. 예를 들어 “(?"는 "3.1Windows"의 "Windows"와 일치하지만 "2000Windows"의 "Windows"와는 일치하지 않습니다.
x|y x 또는 y와 일치합니다. 예를 들어, “z|food"는 "z" 또는 "food"와 일치합니다. "(z|f)ood"는 "zood" 또는 "food"와 일치합니다.
[xyz] 문자 집합입니다. 포함된 임의의 문자와 일치합니다. 예: “[abc]"는 "plain"의 "a"와 일치할 수 있습니다.
[^xyz] 부정 문자 집합입니다. 포함되지 않은 임의의 문자와 일치합니다. 예: “[^abc]"는 "plain"의 "p"와 일치합니다.
[a-z] 문자 범위입니다. 지정된 범위 내의 임의의 문자와 일치합니다. 예: “[a-z]"는 "a"에서 "z"까지의 임의의 소문자 문자와 일치합니다.
[^a-z] 부정 문자 범위입니다. 지정된 범위에 없는 임의의 문자와 일치합니다. 예: “[^a-z]"는 "a"에서 "z"까지의 임의의 문자를 제외합니다.
\b 단어 경계를 일치시키며, 즉 단어와 공백 사이의 위치입니다. 예: “er\b"는 "never"의 "er"와 일치하지만 "verb"의 "er"와는 일치하지 않습니다.
\B 비단어 경계를 일치시킵니다. “er\B"는 "verb"의 "er"와 일치하지만 "never"의 "er"와는 일치하지 않습니다.
\cx x로 지시된 제어 문자를 일치시킵니다. 예: \cM은 Control-M 또는 캐리지 리턴 문자와 일치합니다. x의 값은 A-Z 또는 a-z 중 하나여야 하며, 그렇지 않으면 c는 원래 "c" 문자로 간주됩니다.
\d 수치 문자와 일치합니다. [0-9]와 같습니다.
\D 비수치 문자와 일치합니다. [^0-9]와 같습니다.
\f 페이지 구분 문자와 일치합니다. \x0c 및 \cL과 같습니다.
\n 줄 바꿈 문자와 일치합니다. \x0a 및 \cJ와 같습니다.
\r 캐리지 리턴 문자와 일치합니다. \x0d 및 \cM과 같습니다.
\s 공백 문자를 포함한 모든 공백 문자를 일치시킵니다. [ \f\n\r\t\v]와 같습니다.
\S 모든 비공백 문자와 일치합니다. [^ \f\n\r\t\v]와 같습니다.
\t 제어 문자와 일치합니다. \x09 및 \cI와 같습니다.
\v 수직 탭 문자와 일치합니다. \x0b 및 \cK와 같습니다.
\w 언더스코어를 포함한 모든 단어 문자와 일치합니다. “[A-Za-z0-9_]"와 같습니다.
\W 모든 비단어 문자와 일치합니다. “[^A-Za-z0-9_]"와 같습니다.
\xn n은 16진수 이스케이프 값입니다. 16진수 이스케이프 값은 반드시 두 자리 숫자여야 합니다. 예: “\x41"는 "A"와 일치합니다. "\x041"는 "\x04&1"와 같습니다. 정규 표현식에서는 ASCII 인코딩을 사용할 수 있습니다.
\num num는 양의 정수로, 얻은 일치 항목의 참조입니다. 예: “(.)\1"는 두 개의 연속된 동일 문자를 일치시킵니다.
\n 8진수 이스케이프 값 또는 역참조를 식별합니다. 만약 \n 이전에 적어도 n 개의 얻은 서브 표현식이 있다면, n은 역참조입니다. 그렇지 않으면, n이 8진수 숫자(0-7)인 경우, n은 8진수 이스케이프 값입니다.
\nm 8진수 이스케이프 값 또는 역참조를 식별합니다. 만약 \nm 이전에 적어도 nm 개의 얻은 서브 표현식이 있다면, nm은 역참조입니다. 만약 \nm 이전에 적어도 n 개의 얻은 서브 표현식이 있다면, n은 다음 문자를 따라 오는 역참조입니다. 이러한 조건이 충족되지 않을 경우, nm 이 모두 8진수 숫자(0-7)일 경우, \nm은 8진수 이스케이프 값을 일치시킵니다.
\nml 만약 n이 8진수 숫자(0-3)이고, ml이 모두 8진수 숫자(0-7)이면, 8진수 이스케이프 값 nml와 일치합니다.
\un n을 일치시킵니다. 여기서 n은 네 개의 16진수 숫자로 표시된 Unicode 문자입니다. 예를 들어, \u00A9은 저작권 기호 (©)와 일치합니다.
자주 사용하는 정규 표현식
사용자 이름 /^[a-z0-9_-]{3,16}$/
비밀번호 /^[a-z0-9_-]{6,18}$/
비밀번호 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (숫자/대문자/소문자/특수 문자로 구성되어, 네 가지 모두 포함되어야하고, 8자리 이상)
16진수 값 /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
이메일 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ 또는 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ 또는 [a-zA-z]+://[^\s]*
IP 주소 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ 또는 ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML 태그 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ 또는 <(.*)(.*)>.*<\/\1>|<(.*) \/>
코드 및 주석 삭제 (?
2바이트 문자(한글 포함) 찾기 [^\x00-\xff]
한자(문자) [\u4e00-\u9fa5]
유니코드 인코딩 내 한자 범위 /^[\u2E80-\u9FFF]+$/
중국어 및 전각 구두점(문자) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
날짜(년-월-일) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
날짜(월/일/년) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
시간(시간:분, 24시간제) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
중국 대륙 전화번호 (\d{4}-|\d{3}-)?(\d{8}|\d{7})
중국 대륙 휴대전화번호 1\d{10}
중국 대륙 우편번호 [1-9]\d{5}
중국 대륙 신분증 번호(15자리 또는 18자리) \d{15}(\d\d[0-9xX])?
비부정 정수(양수 또는 0) \d+
양의 정수 [0-9]*[1-9][0-9]*
음의 정수 -[0-9]*[1-9][0-9]*
정수 -?\d+
소수 (-?\d+)(\.\d+)?
빈 줄 \n\s*\r 또는 \n\n(editplus) 또는 ^[\s\S ]*\n
QQ 번호 [1-9]\d{4,}
abc를 포함하지 않는 단어 \b((?!abc)\w)+\b
앞뒤 공백 문자 찾기 ^\s*|\s*$
편집 자주 사용
아래는 특수 중국어의 몇 가지 대체(editplus)입니다.
^[0-9].*\n
^[^제].*\n
^[문제].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

정규 표현식 문법 참고 - 자주 사용하는 정규 표현식 기법 및 문법

정규 표현식은 강력한 텍스트 처리 도구로, 이 페이지에서는 자주 사용하는정규 표현식 문법 참고를 제공하여 정규 표현식의 기본 문법, 수식어, 서브 표현식, 탐욕적 및 비탐욕적 모드 등을 빠르게 이해할 수 있도록 도와드립니다.

정규 표현식 기본 문법

정규 표현식은 문자열 패턴을 설명하는 규칙으로, 일반적인 기본 문법은 다음과 같습니다:

자주 사용하는 정규 표현식 수식어

정규 표현식 수식어는 정규 표현식의 일치 규칙을 변경합니다. 일반적인 수식어는 다음과 같습니다:

탐욕적 모드 및 비탐욕적 모드

정규 표현식에서 수량사는 기본적으로 탐욕적이며, 가능한 한 많은 문자를 일치시킵니다. 비탐욕적 모드는 수량사 뒤에 ?를 추가하여 사용합니다. 사용 예시는 다음과 같습니다:

서브 표현식 및 그룹화

정규 표현식의 서브 표현식은 괄호(( ))로 정의되며, 일치된 부분을 추출하는 데 자주 사용됩니다. 그룹화는 '|' 기호를 사용하여 수행됩니다. 예를 들면:

정규 표현식 빠른 검색

다음은 자주 사용하는 정규 표현식의 빠른 검색 목록입니다:

기능 정규 표현식
숫자 일치 \d
비숫자 일치 \D
문자 일치 [a-zA-Z]
임의의 문자 일치 .
공백 문자 일치 \s

정규 표현식의 사용 사례

정규 표현식은 다음과 같은 여러 상황에서 널리 사용됩니다:

정규 표현식 학습 요령

지금 우리의정규 표현식 문법 참고를 활용하여 정규 표현식 작성 시 효율성을 높이고 텍스트 처리 능력을 향상시키세요!

당신의 발자취:
언어 선택