Visual Studio에서 정규식 사용
Visual Studio는 .NET Framework 정규식을 사용하여 텍스트를 찾고 바꿉니다.Visual Studio 2010과 초기 버전의 Find and Replace 창에서는 고객 맞춤형 공식 문장이 사용되었습니다.이 항목에서는 보다 일반적으로 사용되는 사용자 지정 정규식 기호를 .NET 버전으로 변환하는 방법에 대해 설명합니다.
팁 |
---|
Windows 운영 체제에서 대부분의 줄은 “\r\n”으로 끝납니다(캐리지 리턴 및 새 줄).이러한 문자는 표시되지 않지만 편집기에 제공되며 .NET 정규식 서비스에 전달됩니다. |
자세한 내용은 .NET Framework 정규식을 참조하십시오.
팁 |
---|
대체 패턴에 사용되는 정규식에 대한 자세한 내용은 정규식의 대체를 참조하십시오.번호가 매겨진 캡처 그룹을 사용하기 위해 $1 구문은 번호가 매겨진 그룹을 지정하고 (x) 구문은 해당 그룹을 지정합니다.예를 들어 그룹화된 정규식 (\d)([a-z])는 1a 2b 3c 4d 문자열에서 4개의 일치 항목을 찾습니다.대체 문자열 z$1는 문자열을 z1 z2 z3 z4>으로 변환합니다. Visual Studio 2010의 유사 구문은 그룹화된 정규식의 경우 {:z}([a-z])이고 대체 문자열의 경우 z\1입니다. |
.NET Framework 정규식 비교
다음 표를 사용하여 이전 버전의 Visual Studio에서 사용된 정규식 버전을 .NET Framework 정규식으로 변환할 수 있습니다.
용도 |
새 그룹 |
이전 |
새 예제 |
---|---|---|---|
줄 바꿈 문자를 제외한 모든 단일 문자를 찾습니다. |
. |
. |
a.o는 "around"에서 "aro"와 일치하고 "about"에서 "abo"와 일치하지만 "across"에서 "acro"와는 일치하지 않습니다. |
앞의 식을 0번 이상 찾습니다(가능한 한 많은 수의 문자가 일치). |
* |
* |
a*r은 "rack"의 "r", "ark"의 "ar", 그리고 "aardvark"의 "aar"과 일치합니다. |
0회 이상 일치하는 문자를 찾습니다(와일드카드 *). |
.* |
.* |
c.*e는 “racket”의 “cke”, “comment”의 “comme” 및 “code”의 “code”와 일치합니다. |
앞의 식을 1번 이상 찾습니다(가능한 한 많은 수의 문자가 일치). |
+ |
+ |
e.+e는 "feeder"의 "eede"와 일치하지만 "ee"와는 일치하지 않습니다. |
1회 이상 일치하는 문자를 찾습니다(와일드카드 ?). |
.+ |
.+ |
e.+e는 "feeder"에서 "eede"는 찾지만 "ee"는 찾지 않습니다. |
앞의 식을 0번 이상 찾습니다(가능한 한 적은 수의 문자가 일치). |
*? |
@ |
e.*?e는 "feeder"의 "ee"와 일치하지만 "eede"와는 일치하지 않습니다. |
앞의 식을 1번 이상 찾습니다(가능한 한 적은 수의 문자가 일치). |
+? |
# |
e.+?e는 "enterprise"의 "ente" 및 "erprise"는 찾지만 "enterprise"라는 전체 단어는 찾지 않습니다. |
줄 또는 문자열의 시작 부분에서 일치하는 문자열을 찾습니다. |
^ |
^ |
^car는 "car"라는 단어가 줄의 시작에 나타날 때만 일치합니다. |
줄의 끝 부분에서 일치하는 문자열을 찾습니다. |
\r?$ |
$ |
End\r?$는 줄 끝에 나타나는 "end"와만 일치합니다. |
집합에서 임의의 단일 문자를 찾습니다. |
[abc] |
[abc] |
b[abc]는 "ba", "bb" 및 "bc"와 일치합니다. |
문자 범위에서 일치하는 문자를 찾습니다. |
[a-f] |
[x-y] |
be[n-t]는 "between"의 "bet", "beneath"의 "ben", 그리고 "beside"의 "bes"는 찾지만 "below"는 찾지 않습니다. |
괄호 안에 포함된 식 캡처 및 암시적으로 번호 지정 |
() |
() |
([a-z])X\1은 "aXa" 및 "bXb"와 일치하지만 "aXb"는 일치하지 않습니다. ". “\1”은 첫 번째 식 그룹 “[a-z]”을 가리킵니다. |
일치 무효화 |
(?!abc) |
~(abc) |
real (?!ity)는 "realty"와 "really"에서 "real"은 찾지만 "reality"에서는 찾지 않습니다. 또한 "realityreal"에서 두 번째 "real"(첫 번째 "real"이 아님)을 찾습니다. |
지정된 문자 집합에 없는 문자와 일치 |
[^abc] |
[^abc] |
be[^n-t]는 "before"의 "bef", "behind"의 "beh", 그리고 "below"의 "bel"은 찾지만 "beneath"는 찾지 않습니다. |
기호 앞 또는 뒤에 나오는 식을 찾습니다. |
| |
| |
(sponge|mud) bath는 "sponge bath"와 "mud bath"를 모두 찾습니다. |
백슬래시 다음에 오는 문자는 이스케이프됩니다. |
\ |
\ |
\^는 ^ 문자를 찾습니다. |
이전 문자 또는 그룹의 발생 횟수를 지정합니다. |
{x}, 여기서 x는 일치하는 항목의 수입니다. |
\x, 여기서 x는 일치하는 항목의 수입니다. |
x(ab){2}x는 "xababx"와 일치하고, x(ab){2,3}x는 "xababx" 및 "xabababx"와 일치하지만 "xababababx"와는 일치하지 않습니다. |
유니코드 문자 클래스의 텍스트와 일치합니다. 여기서 "X"는 유니코드 번호입니다.유니코드 문자에 대한 자세한 내용은 다음을 참조하십시오. |
\p{X} |
:X |
\p{Lu}는 "Thomas Doe"의 "T" 및 "D"와 일치합니다. |
단어 경계를 찾습니다. |
\b (\b는 문자 클래스 외부에서 단어 경계를 지정하며 문자 클래스 안에서는 백스페이스를 지정합니다.) |
< 및 >은 단어의 시작과 끝을 지정합니다. |
\bin은 "inside"의 "in"과 일치하지만 "pinto"와는 일치하지 않습니다. |
줄 바꿈(즉, 캐리지 리턴 및 새 줄)과 일치합니다. |
\r?\n |
\n |
End\r?\nBegin은 "End"가 줄의 마지막 문자열이고 "Begin"이 다음 줄의 첫 번째 문자열인 경우에만 "End" 및 "Begin"을 찾습니다. |
일치하는 영숫자 문자를 찾습니다. |
\w |
:a |
a\wd는 "add" 및 "a1d"와 일치하지만 "a d"와는 일치하지 않습니다. |
임의의 공백 문자를 찾습니다. |
(?([^\r\n])\s) |
:b |
Public\sInterface는 "Public Interface"라는 구를 찾습니다. |
일치하는 숫자 문자를 찾습니다. |
\d |
:d |
\d는 "3456"의 "3", "23"의 "2", "1"의 "1"과 일치합니다. |
유니코드 문자를 찾습니다. |
\uXXXX, 여기서 XXXX는 유니코드 문자 값을 지정합니다. |
\uXXXX, 여기서 XXXX는 유니코드 문자 값 지정 |
\u0065는 문자 "e"를 찾습니다. |
식별자와 일치 |
\b(_\w+|[\w-[0-9_]]\w*)\b |
:i |
"type1"은 찾지만 &type1" 또는 "#define"은 찾지 않습니다. |
따옴표 안의 문자열과 일치 |
((\".+?\")|('.+?')) |
:q |
문자열 안의 작은따옴표 또는 큰따옴표와 일치합니다. |
16진수 숫자와 일치 |
\b0[xX]([0-9a-fA-F])\b |
:h |
"0xc67f"와 일치하지만 "0xc67fc67f"는 일치하지 않습니다. |
정수 및 소스와 일치 |
\b[0-9]*\.*[0-9]+\b |
:n |
"1.333"을 찾습니다. |