Skip to main content
Data Infrastructure Insights
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

정규 표현식 예제

기여자 netapp-alavoie

소스 명명 전략으로 정규 표현식 방식을 선택한 경우, 정규 표현식 예시를 Data Infrastructure Insights 자동 해결 방법에서 사용하는 고유한 표현식에 대한 가이드로 사용할 수 있습니다.

정규 표현식 서식 지정

Data Infrastructure Insights 자동 확인을 위한 정규 표현식을 만들 때 _FORMAT_이라는 필드에 값을 입력하여 출력 형식을 구성할 수 있습니다.

기본 설정은 \1입니다. 즉, 정규 표현식과 일치하는 영역 이름은 정규 표현식에 의해 생성된 첫 번째 변수의 내용으로 대체됩니다. 정규 표현식에서는 변수 값이 괄호로 묶인 문장을 통해 생성됩니다. 괄호 안의 문장이 여러 개 나타나는 경우, 변수는 왼쪽에서 오른쪽으로 숫자로 참조됩니다. 변수는 어떤 순서로든 출력 형식에서 사용될 수 있습니다. FORMAT 필드에 상수 텍스트를 추가하여 출력에 상수 텍스트를 삽입할 수도 있습니다.

예를 들어, 이 영역 명명 규칙에 대해 다음과 같은 영역 이름이 있을 수 있습니다.

 [Zone number]_[data center]_[hostname]_[device type]_[interface number]
* S123_Miami_hostname1_filer_FC1
* S14_Tampa_hostname2_switch_FC4
* S3991_Boston_hostname3_windows2K_FC0
* S44_Raleigh_hostname4_solaris_FC1

출력 형식은 다음과 같을 수 있습니다.

 [hostname]-[data center]-[device type]
이렇게 하려면 호스트 이름, 데이터 센터, 장치 유형 필드를 변수에 캡처하여 출력에 사용해야 합니다.  다음 정규 표현식은 이를 수행합니다.
 .*?_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_([a-zA-Z0-9]+)_.*
괄호 세트가 세 개이므로 변수 \1, \2, \3이 채워집니다.

그런 다음 다음 형식을 사용하여 원하는 형식으로 출력을 받을 수 있습니다.

 \2-\1-\3
출력 결과는 다음과 같습니다.
hostname1-Miami-filer
hostname2-Tampa-switch
hostname3-Boston-windows2K
hostname4-Raleigh-solaris

변수 사이의 하이픈은 서식이 지정된 출력에 삽입되는 상수 텍스트의 예를 제공합니다.

예시

영역 이름을 보여주는 예제 1

이 예에서는 정규 표현식을 사용하여 영역 이름에서 호스트 이름을 추출합니다. 다음과 같은 영역 이름이 있는 경우 정규 표현식을 만들 수 있습니다.

  • S0032_myComputer1Name-HBA0

  • S0434_myComputer1Name-HBA1

  • S0432_myComputer1Name-HBA3

호스트 이름을 캡처하는 데 사용할 수 있는 정규 표현식은 다음과 같습니다.

 S[0-9]+_([a-zA-Z0-9]*)[_-]HBA[0-9]
결과는 S로 시작하고 숫자 조합 뒤에 밑줄, 영숫자 호스트 이름(myComputer1Name), 밑줄 또는 하이픈, 대문자 HBA, 단일 숫자(0-9)가 오는 모든 영역과 일치합니다.  호스트 이름만 *\1* 변수에 저장됩니다.

정규 표현식은 다음과 같은 구성 요소로 나눌 수 있습니다.

  • "S"는 영역 이름을 나타내며 표현식을 시작합니다. 이는 영역 이름의 시작 부분에 있는 "S"와만 일치합니다.

  • 괄호 안의 문자 [0-9]는 "S" 뒤에 오는 숫자가 0과 9 사이의 숫자여야 함을 나타냅니다.

  • + 기호는 앞의 괄호 안의 정보가 1회 이상 나타나야 함을 나타냅니다.

  • _ (밑줄)은 S 뒤에 오는 숫자 바로 뒤에 구역 이름에 밑줄 문자만 와야 한다는 것을 의미합니다. 이 예에서 영역 명명 규칙은 밑줄을 사용하여 영역 이름과 호스트 이름을 구분합니다.

  • 필수 밑줄 뒤에 있는 괄호는 그 안에 포함된 패턴이 \1 변수에 저장됨을 나타냅니다.

  • 괄호로 묶인 문자 [a-zA-Z0-9]는 일치되는 문자가 모두 문자(대소문자 구분 없음)와 숫자임을 나타냅니다.

  • 괄호 뒤에 있는 * (별표)는 괄호 안의 문자가 0번 이상 발생함을 나타냅니다.

  • 괄호로 묶인 문자 [_-](밑줄과 대시)는 영숫자 패턴 뒤에 밑줄이나 대시가 와야 함을 나타냅니다.

  • 정규 표현식의 HBA 문자는 이 정확한 문자 시퀀스가 영역 이름에 나타나야 함을 나타냅니다.

  • 마지막 괄호 문자 [0-9]는 0에서 9까지의 숫자 한 개와 일치합니다.

예제 2

이 예에서 첫 번째 밑줄 ""까지 건너뛴 다음, E와 그 뒤의 두 번째 ""까지 모든 것을 일치시키고, 그 이후의 모든 것을 건너뜁니다.

존: Z_E2FHDBS01_E1NETAPP

호스트 이름: E2FHDBS01

정규식: .?(E.?).*?

예제 3

정규 표현식(아래)의 마지막 섹션을 둘러싼 괄호 "( )"는 어느 부분이 호스트 이름인지를 식별합니다. VSAN3을 호스트 이름으로 사용하려면 _([a-zA-Z0-9]).*가 됩니다.

존: A_VSAN3_SR48KENT_A_CX2578_SPA0

호스트 이름: SR48KENT

정규식: _[a-zA-Z0-9]+_([a-zA-Z0-9]).*

더 복잡한 명명 패턴을 보여주는 예제 4

다음과 같은 영역 이름이 있는 경우 정규 표현식을 만들 수 있습니다.

  • 내 컴퓨터 이름 123-HBA1_Symm1_FA3

  • 내 컴퓨터 이름 123-HBA2_Symm1_FA5

  • myComputerName123-HBA3_Symm1_FA7

이러한 문제를 포착하는 데 사용할 수 있는 정규 표현식은 다음과 같습니다.

 ([a-zA-Z0-9]*)_.*
이 표현식으로 평가된 후에는 \1 변수에 _myComputerName123_만 포함됩니다.

정규 표현식은 다음과 같은 구성 요소로 나눌 수 있습니다.

  • 괄호는 패턴이 \1 변수에 저장됨을 나타냅니다.

  • 괄호로 묶인 문자 [a-zA-Z0-9]는 대소문자에 관계없이 모든 문자 또는 숫자가 일치함을 의미합니다.

  • 괄호 뒤에 있는 * (별표)는 괄호 안의 문자가 0번 이상 발생함을 나타냅니다.

  • 정규 표현식의 _ (밑줄) 문자는 영역 이름에 앞의 괄호와 일치하는 영숫자 문자열 바로 뒤에 밑줄이 있어야 함을 의미합니다.

  • 그 . (마침표)는 모든 문자(와일드카드)와 일치합니다.

  • * (별표)는 앞의 마침표 와일드카드가 0번 이상 나타날 수 있음을 나타냅니다.

    즉, .* 조합은 모든 문자를 여러 번 반복해서 나타낼 수 있습니다.

패턴이 없는 영역 이름을 보여주는 예제 5

다음과 같은 영역 이름이 있는 경우 정규 표현식을 만들 수 있습니다.

  • myComputerName_HBA1_Symm1_FA1

  • myComputerName123_HBA1_Symm1_FA1

이러한 문제를 포착하는 데 사용할 수 있는 정규 표현식은 다음과 같습니다.

 (.*?)_.*
\1 변수에는 _myComputerName_(첫 번째 영역 이름 예시) 또는 _myComputerName123_(두 번째 영역 이름 예시)이 포함됩니다.  따라서 이 정규 표현식은 첫 번째 밑줄 이전의 모든 것과 일치합니다.

정규 표현식은 다음과 같은 구성 요소로 나눌 수 있습니다.

  • 괄호는 패턴이 \1 변수에 저장됨을 나타냅니다.

  • .* (마침표 별표)는 모든 문자와 여러 번 일치합니다.

  • 괄호 뒤에 있는 * (별표)는 괄호 안의 문자가 0번 이상 발생함을 나타냅니다.

  • ? 문자는 탐욕스럽지 않은 매치를 만듭니다. 이렇게 하면 마지막이 아닌 첫 번째 밑줄에서 일치를 중지하게 됩니다.

  • 문자 _.*는 첫 번째로 발견된 밑줄과 그 뒤에 오는 모든 문자와 일치합니다.

패턴을 사용하여 컴퓨터 이름을 표시하는 예 6

다음과 같은 영역 이름이 있는 경우 정규 표현식을 만들 수 있습니다.

  • Storage1_Switch1_myComputerName123A_A1_FC1

  • Storage2_Switch2_myComputerName123B_A2_FC2

  • Storage3_Switch3_myComputerName123T_A3_FC3

이러한 문제를 포착하는 데 사용할 수 있는 정규 표현식은 다음과 같습니다.

 .*?_.*?_([a-zA-Z0-9]*[ABT])_.*
영역 명명 규칙에는 패턴이 더 많으므로 위의 표현식을 사용할 수 있습니다. 이 표현식은 A, B 또는 T로 끝나는 모든 호스트 이름(예시에서는 myComputerName)과 일치하며 해당 호스트 이름을 \1 변수에 넣습니다.

정규 표현식은 다음과 같은 구성 요소로 나눌 수 있습니다.

  • .* (마침표 별표)는 모든 문자와 여러 번 일치합니다.

  • ? 문자는 탐욕스럽지 않은 매치를 만듭니다. 이렇게 하면 마지막이 아닌 첫 번째 밑줄에서 일치를 중지하게 됩니다.

  • 밑줄 문자는 영역 이름의 첫 번째 밑줄과 일치합니다.

  • 따라서 첫 번째 .*?_ 조합은 첫 번째 영역 이름 예의 문자 Storage1_과 일치합니다.

  • 두 번째 .*?_ 조합은 첫 번째와 비슷하게 동작하지만 첫 번째 영역 이름 예의 Switch1_과 일치합니다.

  • 괄호는 패턴이 \1 변수에 저장됨을 나타냅니다.

  • 괄호로 묶인 문자 [a-zA-Z0-9]는 대소문자에 관계없이 모든 문자 또는 숫자가 일치함을 의미합니다.

  • 괄호 뒤에 있는 * (별표)는 괄호 안의 문자가 0번 이상 발생함을 나타냅니다.

  • 정규 표현식 [ABT]의 대괄호 문자는 영역 이름의 단일 문자와 일치하며, 이 문자는 A, B 또는 T여야 합니다.

  • 괄호 뒤에 있는 _ (밑줄)은 [ABT] 문자 일치 뒤에 밑줄이 와야 함을 나타냅니다.

  • .* (마침표 별표)는 모든 문자와 여러 번 일치합니다.

따라서 이 결과로 \1 변수에는 다음과 같은 영숫자 문자열이 포함됩니다.

  • 몇 개의 영숫자 문자와 두 개의 밑줄이 앞에 붙었습니다.

  • 밑줄(그리고 임의의 수의 영숫자 문자)이 뒤에 옵니다.

  • 세 번째 밑줄 앞에 A, B 또는 T라는 마지막 문자가 있습니다.

예제 7

존: myComputerName123_HBA1_Symm1_FA1

호스트 이름: myComputerName123

정규식: ([a-zA-Z0-9]+)_.*

예제 8

이 예제에서는 첫 번째 _ 앞에 있는 모든 것을 찾습니다.

영역: MyComputerName_HBA1_Symm1_FA1

MyComputerName123_HBA1_Symm1_FA1

호스트 이름: MyComputerName

정규식: (.?)_.

예제 9

이 예제에서는 첫 번째 _ 이후부터 두 번째 _까지의 모든 내용을 찾습니다.

존: Z_내 컴퓨터 이름_저장소 이름

호스트 이름: 내 컴퓨터 이름

정규식: .?(.?).*?

예제 10

이 예제에서는 영역 예제에서 "MyComputerName123"을 추출합니다.

존: Storage1_Switch1_MyComputerName123A_A1_FC1

Storage2_Switch2_MyComputerName123B_A2_FC2

Storage3_Switch3_MyComputerName123T_A3_FC3

호스트 이름: MyComputerName123

정규식: .?.?([a-zA-Z0-9]+)[ABT]_.

예제 11

존: Storage1_Switch1_MyComputerName123A_A1_FC1

호스트 이름: MyComputerName123A

정규식: .?.?([a-zA-z0-9]+).*?

예제 12

^ (곡절 기호 또는 캐럿)은 대괄호 안에 들어 있으며 표현식을 부정합니다. 예를 들어, [^Ff]는 대문자 또는 소문자 F를 제외한 모든 문자를 의미하고, [^az]는 소문자 a~z를 제외한 모든 문자를 의미하며, 위의 경우에는 _를 제외한 모든 문자를 의미합니다. 포맷 명령문은 출력 호스트 이름에 "-"를 추가합니다.

존: mhs_apps44_d_A_10a0_0429

호스트 이름: mhs-apps44-d

RegExp: ()_([AB]).* Data Infrastructure Insights 의 형식: \1-\2 ([^_])_ ()_([^_]).* Data Infrastructure Insights 의 형식: \1-\2-\3

예제 13

이 예에서 저장 별칭은 "\"로 구분되고 표현식은 "\\"를 사용하여 문자열에 실제로 "\"가 사용되고 있으며 표현식 자체의 일부가 아니라는 것을 정의해야 합니다.

저장소 별칭: \Hosts\E2DOC01C1\E2DOC01N1

호스트 이름: E2DOC01N1

정규식: \\.?\\.?\\(.*?)

예제 14

이 예제에서는 영역 예제에서 "PD-RV-W-AD-2"를 추출합니다.

구역: PD_D-PD-RV-W-AD-2_01

호스트 이름: PD-RV-W-AD-2

정규식: -(.*-\d).*

예제 15

이 경우의 형식 설정은 호스트 이름에 "US-BV-"를 추가합니다.

존: SRV_USBVM11_F1

호스트 이름: US-BV-M11

정규식: SRV_USBV([A-Za-z0-9]+)_F[12]

형식: US-BV-\1