2016-08-10 6 views
3

メールの本文があります。いくつかの行のテキストが含まれています。少なくとも3つのダッシュ/ハイフンを含む文字列と一致する正規表現

  1. は、少なくとも3つのダッシュ

破線文字列の形状は不明であるが含まれている特定のテキスト

  • 後に来る:という私は、文字列の最初の出現を抽出する必要があります。これは、例えば、文字及び任意の数の数、すなわち: AA3A-123-NNN-Dまたは12-OOO-12455-AS

    を含んでいてもよい:

    ダミーテキストの悲しみ、AMET consecteturのadipiscingのELIT座ります。 Donec imperdiet porta libero ac imperdiet。

    ナムenimのnisl:aliquam UTのfeugiat履歴書

    私が検索する必要がある後に特定のテキスト: Etiam rhoncus AAFA-12X-DDDD-12 metusのrisus 詳細テキスト:fooの

    ターゲット言語はC#です。

    私は([A-Za-z0-9]{5}-[A-Za-z0-9]{4}-[A-Za-z0-9]{3}-[A-Za-z0-9]{5})のようなことを試みましたが、ここでわかるように、常にわかっていない文字列の形状を設定する必要があります。

  • +0

    正規表現のブロック(各ダッシュの前)に可能な文字の範囲が含まれている場合は、Fivestarに感謝の意を借りて{1,5}を1から5 – Fivestar

    答えて

    4

    あなたは[\s\S]で怠惰な量指定子を使用することができます。

    (?:Specific\ text\ after\ which\ I\ need\ to\ search:) 
    [\s\S]+?\K 
    (\b\w+-\w+-\w+-\w+\b) 
    

    \bは、ワード境界で、\Kから左にすべてを削除します一致。
    a demo on regex101.comを参照してください。

    +1

    '[\ s \ S]'の代わりに '(?s)'を使うこともできます。 – rock321987

    +0

    ありがとうございました。文字列に3つのダッシュだけがあれば動作しますが、それ以上の場合は例えば:AA-B12-C333-D 3番目のダッシュの後の部分に一致しません – Ashton

    +1

    @Ashton最後に '\ b \ w + - \ w + - \ w + - \ w + \ b \ S * ' – rock321987

    0

    あなたの式に未知数の文字と数字が含まれている場合は、正規表現の範囲を指定するのが最善です。私はあなたの例では、ブロックが5文字で、少なくとも1文字が1文字であることが分かります。

    したがって、このような何かがそれをキャプチャします、

    ([A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5}) 
    
    +0

    に変更できます。 Janのソリューションは、私が必要とするものの近くで動作します。私はあなたの助けに感謝します ! :) – Ashton

    +0

    @Ashtonいいえprob!その答えははるかに良いです私はちょうどあなたのハハをedittedかなり怠惰な正規表現です。幸運が進む! – Fivestar

    0

    (?:[a-zA-Z0-9]+-){3,}[a-zA-Z0-9]+のようなものを使用します。これがするのは、3つ以上の英数字のグループがダッシュで終わっているものと一致し、その後に続くものがないものです。

    Try it yourself on Regex101

    +0

    セバスチャンありがとう、私はこれも正しい方向に進んでいると思っていますが、Janとrock321987の提案は近いです。あなたの助けに感謝! – Ashton

    関連する問題