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
음수 값은 무시됩니다.
<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에서만 유효합니다.
참고 항목
SingleLine은 기본 동작입니다. 옵션 매개 변수와 함께 단일 줄과 여러 줄은 사용할 수 없습니다. PowerShell 6.0에서 해결되었습니다. 해결 방법은 정규식에서 모드 한정자를 사용하는 것입니다. 정규식 옵션에서 모드 한정자에 대해 자세히 읽을 수 있습니다.
단항 및 이진 분할 연산자
단항 분할 연산자(-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
다음 문은 첫 번째 숫자에서 여기 문자열의 각 줄을 분할합니다. 여러 줄 옵션을 사용하여 각 줄과 문자열의 시작을 인식합니다.
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
참고 항목
PowerShell