다음을 통해 공유


about_Split

간단한 설명

Split 연산자를 사용하여 하나 이상의 문자열을 부분 문자열로 분할하는 방법을 설명합니다.

자세한 설명

Split 연산자는 하나 이상의 문자열을 부분 문자열로 분할합니다. 분할 작업의 다음 요소를 변경할 수 있습니다.

  • 구분 기호입니다. 기본값은 공백이지만 구분 기호를 지정하는 문자, 문자열, 패턴 또는 스크립트 블록을 지정할 수 있습니다. PowerShell의 Split 연산자는 단순 문자가 아닌 구분 기호의 정규식을 사용합니다.
  • 최대 부분 문자열 수입니다. 기본값은 모든 부분 문자열을 반환하는 것입니다. 하위 문자열 수보다 작은 숫자를 지정하면 다시 기본 부분 문자열이 마지막 부분 문자열에 연결됩니다.
  • 구분 기호가 일치하는 조건(예: SimpleMatch 및 Multiline)을 지정하는 옵션입니다.

구문

다음 다이어그램에서는 -split 연산자의 구문을 보여 있습니다.

매개 변수 이름이 명령에 나타나지 않습니다. 매개 변수 값만 포함합니다. 값은 구문 다이어그램에 지정된 순서대로 표시되어야 합니다.

-Split <String>
-Split (<String[]>)
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]

이진 Split 문(구분 기호 또는 스크립트 블록이 포함된 Split 문)을 대체 -iSplit 하거나 -cSplit-split 대신할 수 있습니다. -iSplit-split 연산자는 대/소문자를 구분하지 않습니다. -cSplit 연산자는 대/소문자를 구분하므로 구분 기호 규칙이 적용될 때 대/소문자가 고려됩니다.

매개 변수

<String> 또는 <String[]>

분할할 문자열을 하나 이상 지정합니다. 여러 문자열을 제출하는 경우 모든 문자열은 동일한 구분 기호 규칙을 사용하여 분할됩니다.

예시:

-split "red yellow blue green"
red
yellow
blue
green

<구분 기호>

부분 문자열의 끝을 식별하는 문자입니다. 기본 구분 기호는 공백과 인쇄할 수 없는 문자(예: 줄 바꿈('n) 및 탭('t))을 포함하는 공백입니다. 문자열이 분할되면 모든 부분 문자열에서 구분 기호가 생략됩니다. 예시:

"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address

기본적으로 구분 기호는 결과에서 생략됩니다. 구분 기호의 전체 또는 일부를 유지하려면 유지하려는 부분을 괄호로 묶습니다. 매개 변수가 <Max-substrings> 추가되면 명령이 컬렉션을 분할할 때 우선적으로 적용됩니다. 구분 기호를 출력의 일부로 포함하도록 선택하는 경우 명령은 구분 기호를 출력의 일부로 반환합니다. 그러나 구분 기호를 출력의 일부로 반환하도록 문자열을 분할하는 것은 분할로 계산되지 않습니다.

예:

"Lastname:FirstName:Address" -split "(:)"
Lastname
:
FirstName
:
Address

"Lastname/:/FirstName/:/Address" -split "/(:)/"
Lastname
:
FirstName
:
Address

<Max-substrings>

분할 작업에서 반환하는 최대 부분 문자열 수를 지정합니다. 기본값은 구분 기호로 분할된 모든 부분 문자열입니다. 더 많은 부분 문자열이 있는 경우 최종 부분 문자열에 연결됩니다. 하위 문자열이 적으면 모든 부분 문자열이 반환됩니다. 값 0은 모든 부분 문자열을 반환합니다.

예시:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune

둘 이상의 문자열(문자열 배열)을 연산 Max-substrings 자에 -split 제출하면 각 문자열에 제한이 개별적으로 적용됩니다.

$c = 'a,b,c','1,2,3,4,5'
$c -split ',', 3

a
b
c
1
2
3,4,5

<Max-substrings> 에서는 반환되는 최대 개체 수를 지정하지 않습니다. 다음 예제 <Max-substrings> 에서는 3으로 설정됩니다. 이로 인해 세 개의 부분 문자열 값이 생성되지만 결과 출력에는 총 5개의 문자열이 생성됩니다. 구분 기호는 최대 3개의 부분 문자열에 도달할 때까지 분할 후에 포함됩니다. 최종 부분 문자열의 추가 구분 기호는 부분 문자열의 일부가 됩니다.

'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3
Chocolate
-
Vanilla
-
Strawberry-Blueberry

음수 값은 입력 문자열의 끝에서 시작하여 요청된 부분 문자열의 양을 반환합니다.

참고 항목

음수 값에 대한 지원이 PowerShell 7에 추가되었습니다.

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split ",", -5
Mercury,Venus,Earth,Mars
Jupiter
Saturn
Uranus
Neptune

<ScriptBlock>

구분 기호를 적용하기 위한 규칙을 지정하는 식입니다. 식은 $true 또는 $false 평가해야 합니다. 스크립트 블록을 중괄호로 묶습니다.

예시:

$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
$c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,
arth,Mars,Ju
it
r,Saturn,Uranus,N

tun

<옵션>

옵션 이름을 따옴표로 묶습니다. 옵션은 Max-substrings 매개 변수가 문에 사용되는 경우에만 <유효합니다> .

Options 매개 변수의 구문은 다음과 같습니다.

"SimpleMatch [,IgnoreCase]"

"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"

SimpleMatch 옵션은 다음과 같습니다.

  • SimpleMatch: 구분 기호를 평가할 때 간단한 문자열 비교를 사용합니다. RegexMatch와 함께 사용할 수 없습니다.
  • IgnoreCase: -cSplit 연산자가 지정된 경우에도 대/소문자를 구분하지 않는 일치를 강제합니다.

RegexMatch 옵션은 다음과 같습니다.

  • RegexMatch: 정규식 일치를 사용하여 구분 기호를 평가합니다. 이 옵션은 기본 동작입니다. SimpleMatch와 함께 사용할 수 없습니다.
  • IgnoreCase: -cSplit 연산자가 지정된 경우에도 대/소문자를 구분하지 않는 일치를 강제합니다.
  • CultureInvariant: 구분 기호를 평가할 때 언어의 문화적 차이를 무시합니다. RegexMatch에서만 유효합니다.
  • IgnorePatternWhitespace: 이스케이프되지 않은 공백과 숫자 기호(#)로 표시된 주석을 무시합니다. RegexMatch에서만 유효합니다.
  • 여러 줄: 여러 줄 모드가 강제로 적용 ^ 되고 $ 입력 문자열의 시작과 끝 대신 모든 줄의 시작 끝과 일치합니다.
  • 단일 줄: 단일 줄 모드는 입력 문자열을 SingleLine으로 처리합니다. 줄 바꿈을 . 제외한 \n모든 문자를 일치시키는 대신 문자가 모든 문자(줄 바꿈 포함)를 일치하도록 합니다.
  • ExplicitCapture: 명명되지 않은 일치 그룹만 결과 목록에 반환되도록 명명되지 않은 일치 그룹을 무시합니다. RegexMatch에서만 유효합니다.

단항 및 이진 분할 연산자

단항 분할 연산자(-split <string>)는 쉼표보다 우선 순위가 높습니다. 따라서 쉼표로 구분된 문자열 목록을 단항 분할 연산자에 제출하면 첫 번째 문자열(첫 번째 쉼표 앞)만 분할됩니다.

다음 패턴 중 하나를 사용하여 둘 이상의 문자열을 분할합니다.

  • 이진 분할 연산자 사용(<string[]> -split <구분 기호>)
  • 모든 문자열을 괄호로 묶습니다.
  • 변수에 문자열을 저장한 다음, 변수를 분할 연산자에 제출합니다.

다음 예제를 참조하세요.

PS> -split "1 2", "a b"
1
2
a b
PS> "1 2", "a b" -split " "
1
2
a
b
PS> -split ("1 2", "a b")
1
2
a
b
PS> $a = "1 2", "a b"
PS> -split $a
1
2
a
b

예제

다음 문은 공백에서 문자열을 분할합니다.

-split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

Windows
PowerShell
2.0
Windows
PowerShell
with
remoting

다음 문은 문자열을 임의의 쉼표로 분할합니다.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

다음 문은 문자열을 "er" 패턴으로 분할합니다.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune

다음 문은 문자 "N"에서 대/소문자를 구분하는 분할을 수행합니다.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune

다음 문은 문자열을 "e" 및 "t"로 분할합니다.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
M
rcury,V
nus,
ar
h,Mars,Jupi

r,Sa
urn,Uranus,N
p
un

다음 문은 문자열을 "e" 및 "r"로 분할하지만 결과 부분 문자열을 6개의 부분 문자열로 제한합니다.

"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M

cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune

다음 문은 문자열을 세 개의 부분 문자열로 분할합니다.

"a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h

다음 문은 문자열의 끝에서 시작하여 문자열을 세 개의 부분 문자열로 분할합니다.

"a,b,c,d,e,f,g,h" -split ",", -3
a,b,c,d,e,f
g
h

다음 문은 두 문자열을 세 개의 부분 문자열로 분할합니다. (제한은 각 문자열에 독립적으로 적용됩니다.)

"a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h

다음 문은 첫 번째 숫자에서 여기 문자열의 각 줄을 분할합니다. 여러 줄 옵션을 사용하여 각 줄과 문자열의 시작을 인식합니다.

0은 Max-substrings 매개 변수의 "모두 반환" 값을 나타냅니다. Max-substrings 값이 지정된 경우에만 다중 줄과 같은 옵션을 사용할 수 있습니다.

$a = @'
1The first line.
2The second line.
3The third of three lines.
'@
$a -split "^\d", 0, "multiline"

The first line.

The second line.

The third of three lines.

다음 문은 백슬래시 문자를 사용하여 점(.) 구분 기호를 이스케이프합니다.

기본값인 RegexMatch에서는 따옴표(".")로 묶인 점이 줄 바꿈 문자를 제외한 모든 문자와 일치하도록 해석됩니다. 결과적으로 Split 문은 줄 바꿈을 제외한 모든 문자에 대해 빈 줄을 반환합니다.

"This.is.a.test" -split "\."
This
is
a
test

다음 문에서는 SimpleMatch 옵션을 사용하여 -split 연산자를 지시하여 점(.) 구분 기호를 문자 그대로 해석합니다.

0은 Max-substrings 매개 변수의 "모두 반환" 값을 나타냅니다. Max-substrings 값이 지정된 경우에만 SimpleMatch와 같은 옵션을 사용할 수 있습니다.

"This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test

다음 문은 변수 값에 따라 두 구분 기호 중 하나에서 문자열을 분할합니다.

$i = 1
$c = "LastName, FirstName; Address, City, State, Zip"
$c -split $(if ($i -lt 1) {","} else {";"})
LastName, FirstName
 Address, City, State, Zip

참고 항목