none
PowerShell에서 RegEx RRS feed

  • 질문

  • PowerShell에서 RegEx를 사용하면 첫번째로 조건에 맞는 문자열만 출력을 합니다. 전체 Data에서 조건에 맞는 모든 문자열을 출력하는 방법을 알려주세요.

    2011년 11월 8일 화요일 오전 5:36

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell에서 RegEx”에 대한 답변을 드리겠습니다.

                

    (i?) 심볼을 사용해서 조건에 맞는 모든 문자열을 출력할 수 있습니다.

     

    Step 1 : Email

     

    아래의 함수는 문자열에서 모든 Email 문자열을 출력을 합니다.

     

    function find-EmailAddress

    {

     

        param(

            [Parameter(Mandatory=$true)]

            $stringData

            

        )

       

        trap [exception]

        {

            Write-Host $_.Exception.Message

            continue;

        }

       

     

        $emailpattern = '(?i)\b([A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b'

     

     

     

        $emails = ([regex]$emailpattern).Matches($stringData) | ForEach-Object { $_.Groups[1].Value }

     

        $emails

    }

     

     

    find-EmailAddress 'multiple emails like honggildong@hostname.com and kjh9987@hostname.com in a string'

     

     

    Step 2 : HTML String

     

    인터넷에서 HTML 페이지의 문자열을 제공받은 후 모든 <p> 태그의 내용을 출력합니다.

     

    function find-PTag

    {

     

        param(

            [Parameter(Mandatory=$true)]

            $url

        )

     

        $webClient = New-Object System.Net.WebClient

       

     

        $html = $webClient.DownloadString($url) | Out-String  

       

     

        $headerpattern = '(?i)<p>(.*?)</p>'

       

     

        $header = ([regex]$headerpattern).Matches($html) | Foreach-Object { $_.Groups[1].Value }

       

     

        $header

     

    }

     

    find-PTag "http://www.microsoft.com"

     

     

    참고 자료

     

    WebClient Class

    http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

     

    New-Object

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

     

    Out-String

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

     

    Using the Foreach-Object Cmdlet

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

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 12월 2일 금요일 오전 6:26
    2011년 11월 9일 수요일 오전 8:56
    중재자