반응형
문자열에서 텍스트 추출
문자열에서 "프로그램 이름"을 추출하려면 어떻게 해야 합니까?문자열은 다음과 같습니다.
% O0033 (SUB RAD MSD 50R III) G91G1X-6.4Z-2F500 G3I6.4Z-8. G3I6.4 G3R3.2X6.4F500 G91G0Z5.G91G1X-10.4 G3I10.4 G3R5.2X10.4 G90G0Z2.M99 %
프로그램 이름은 (SUB RAD MSD 50R III)입니다.결과를 다른 문자열에 저장해도 좋습니다.파워쉘을 배우고 있으니 어떤 답변이든 알려주시면 감사하겠습니다.
다음 정규 표현식은 괄호 사이에서 임의의 것을 추출합니다.
PS> $prog = [regex]::match($s,'\(([^\)]+)\)').Groups[1].Value
PS> $prog
SUB RAD MSD 50R III
설명(RegexBuddy로 작성)
Match the character '(' literally «\(»
Match the regular expression below and capture its match into backreference number 1 «([^\)]+)»
Match any character that is NOT a ) character «[^\)]+»
Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Match the character ')' literally «\)»
추가 읽기:
프로그램 이름이 항상 ()의 첫 번째 항목이고 마지막 항목이 아닌 다른 항목을 포함하지 않는 경우,$yourstring -match "[(][^)]+[)]"일치하는 결과가 나올 것입니다.$Matches[0]
비정규 솔루션을 추가하는 것입니다.
'(' + $myString.Split('()')[1] + ')'
그러면 괄호에서 문자열을 분할하고 프로그램 이름이 있는 배열에서 문자열을 가져옵니다.
괄호가 필요 없는 경우 다음을 사용합니다.
$myString.Split('()')[1]
Using -replace
$string = '% O0033(SUB RAD MSD 50R III) G91G1X-6.4Z-2.F500 G3I6.4Z-8.G3I6.4 G3R3.2X6.4F500 G91G0Z5. G91G1X-10.4 G3I10.4 G3R5.2X10.4 G90G0Z2. M99 %'
$program = $string -replace '^%\sO\d{4}\((.+?)\).+$','$1'
$program
SUB RAD MSD 50R III
언급URL : https://stackoverflow.com/questions/9113231/extract-text-from-a-string
반응형
'programing' 카테고리의 다른 글
| XML에서 잘못된 문자는 무엇입니까? (0) | 2023.09.16 |
|---|---|
| 판다 왼쪽 바깥쪽 조인 결과 왼쪽 테이블보다 큰 테이블이 나타남 (0) | 2023.09.16 |
| LISTAGG with ORDER BY NULL이 실제로 주문 기준으로 사용하는 것은? (0) | 2023.09.16 |
| DIV를 선택할 수 없게 만드는 방법이 있습니까? (0) | 2023.09.16 |
| 개체가 존재하지 않는 경우 Springdata-repository의 삭제 방법에 예외를 두지 않도록 하려면 어떻게 해야 합니까? (0) | 2023.09.16 |