none
[PowerShel Tips] Regular Expression 활용 RRS feed

  • 일반 토론

  • 질문

     

    Regular Expression 를 이용해서 복잡한 문자열 패턴을 필터링할 수 있습니다.

     

    답변

     

     복잡한 문자열을 필터링을 할 경우 단어만으로 필터링을 할 수가 없습니다. 하지만 Regular Expression을 지원하는 필터링 명령어로 간단하게 해결할 수 있습니다.

     

    Step 1 : 기본

    아래의 Script KB문자 이후 숫자 4~6번 연속으로 존재하면 그 열을 출력을 합니다.

    $text = 'The problem was discussed in KB552356. Mail feedback to tobias @powershell.com' $pattern = 'KB\d{4,6}'

    if ($text -match $pattern) { $matches[0]}

     

    Step 2 : IP Address

    IP Address 형식을 필터링할 수 있습니다. 아래의 Script IPConfig 출력 문자열에서 IP 형식의 줄만 출력을 합니다.

    $ipaddressPattern = '\b(?:\d{1,3}\.){3}\d{1,3}\b'

    ipconfig | Select-String -Pattern $ ipaddressPattern -casesensitive

     

    Step 3 : Number

    문자열에 숫자만 포함되었느지 확인할 수 있습니다. Regular Expression [^0-9]는 숫자를 제외한 나머지 문자에 매치합니다. Script는 숫자를 제외한 나머지 문자가 포함이 되면 False를 반환을 하고 오직 숫자만 포함되어 있으면 True를 반환을 합니다.

    $numberpattern = '[^0-9]'

    $numberstring = '998080'

    -NOT ($numberstring -match $numberpattern)

     

    Step 4 : E-mail Address

    이메일 형식이 정확한지 확인할 수 있습니다. 문자열이 이메일형식과 일치하면 True, 일치하지 않으면 False를 반환을 합니다.

    $email = 'Administrator@ForumQA.com'

    $email -match ’\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b’

     

    참고 자료

     

    about_Comparison_Operators

    http://technet.microsoft.com/en-us/library/dd315321.aspx

    Select-String

    http://technet.microsoft.com/en-us/library/dd315403.aspx

    2011년 10월 19일 수요일 오전 9:04
    중재자