2016-05-12 6 views
1

私はregexを使っていくつかのテキストを解析しようとしていて、2つの異なるタグの下で同じテキストをつかむ必要があり、 。ここで私は持ってしようとしているテキストのサンプルです。再帰正規表現、2つの異なるタグの下で同じテキストをキャプチャする

Reputation=High risk ProtocolP=SSL client Web_Application=YouTube URL=https://youtube.com 

そして、ここで私がこれまで書いてきた正規表現がされています。

^Reputation=(?<rep>.*?)\sProtocol=(?<prot>.*?)\sWeb_Application=(?<webapp>.*?)\sURL=(?<url>[http|https].*?)\sSource_IP=(?<sip>.*?)\s 

これは私が最初に必要とするものですが、URLセクションに2番目のタグを追加してドメイン名のみを取得する必要があります。たとえば、https://youtube.com

ドメインがhttps://m.youtube.comの場合は、それも同様にキャプチャする必要があります。

これを行う方法はありますか?

+0

'評判=ハイリスクProtocolP = SSLクライアントWeb_Application以外1+文字で続く= ​​YouTubeのURL = https://でyoutube.com'これは生データです。いいえ、残念ながらXML断片解析機能はありません。 –

+0

'URL =(?(?:http | https)://(? [^ /] +)。*?)'で 'URL =(? [http | https]。*?) 。 https://regex101.com/r/pB0tN7/1 –

+0

を参照してください。残念ながら、これは何らかの理由で機能しません。 私はこの種の作品を時々URL =(? https ?: //(? [^/s] +)(?:/ [^ s] +)?)\ s + '問題にしています非常に打撃を受け、捕獲されたものを逃す。場合によってはURLとドメインの両方を取得することもあります。 https://をドメイン名の後ろに置くか、ドメイン名の/の後ろに何も置かずにhttp://を入力します。 URLとドメインを保証する方法がわからない –

答えて

0

あなたはURL=(?<url>https?://(?<domain>[^/\s]+)(?:/[^\s]+)*)で一部に一致するURLを置き換えることができます。

Reputation=(?<rep>.*?)\sProtocolP=(?<prot>.*?)\sWeb_Application=(?<webapp>.*?)\sURL=(?<url>https?://(?<domain>[^/\s]+)(?:/\S+)*)\sSource_IP=(?<sip>.*?)\s 

regex demo

  • https?://を参照してください - http://またはhttps://
  • (?<domain>[^/\s]+)と一致する - ドメイン照合部、1+以外の文字/と空白
  • (?:/\S+)* - /の0+シーケンスは空白
関連する問題