0

私はルビーに次のテキストを持っています、私は----と----(コンテンツ)の間の部分だけを抽出したいのですが、それを行うことができません、私は使用して正規表現で試しました:

mystring.match(/^-*(.*?)^-*/m)[1]

これはテキストです:

Congrats! You just got a new contact lead

Here's the information your contact submitted:

------------------------------------------------------------------------------------

    Name: testing
    Email: test123@gmail.com
    Mensaje: hello
this is a nice test

------------------------------------------------------------------------------------
For your convenience, we have automatically added this contact and message to your account.

Best of luck!
- LeadABC
4

3 に答える 3

5

試す...

mystring.match(/-+(.*?)-+/m)[1]

RubyFiddle

ただし、コンテンツ-にが含まれていると、これは機能しなくなります。10文字など、最低限の文字を受け入れると、おそらくより堅牢になります。これを行うには、数量詞を使用できます。-{10,}

mystring.match(/(-{10,})(.*?)\1/m)[2]

RubyFiddle

-このバージョンでは、一致する数のバランスも確保されます(最初に16文字に一致した場合は、最後にも-16文字に一致する必要があり-ます)。

于 2012-11-22T04:17:44.157 に答える
0

末尾に白い文字が含まれる可能性のある連続したハイフンのみで構成される行で分割すると、堅牢になります。

mystring.split(/^[ \t]*-+[ \t]*$/)[1]
于 2012-11-22T06:23:16.817 に答える
0

コンテンツにが含まれている可能性がありますが-、それでも行末をとと一致させることができる^ので$、次を試してください。

mystring.match(/(^-{84}$)(.*?)\1/m)[2]
于 2012-11-22T04:24:17.970 に答える