如何在ruby中获取一段文本

如何在ruby中获取一段文本,ruby,regex,Ruby,Regex,我在ruby中有以下文本,我只想提取----和----之间的部分(内容),但我不能这样做,我尝试使用正则表达式: mystring.match(/^-*(.*?)^-*/m)[1] 全文如下: Congrats! You just got a new contact lead Here's the information your contact submitted: -------------------------------------------------------------

我在ruby中有以下文本,我只想提取----和----之间的部分(内容),但我不能这样做,我尝试使用正则表达式:

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
试试看

但是,如果您的内容中有
-
,则此操作将中断。如果您接受最小值,例如10个
-
字符,那么它可能会更健壮。您可以使用
{10,}
量词来执行此操作

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

此版本还确保匹配的
-
的数量是平衡的(如果它在开始时匹配了16个
-
字符,那么它在结束时也必须匹配16个
-
字符)。

尝试

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

但是,如果您的内容中有
-
,则此操作将中断。如果您接受最小值,例如10个
-
字符,那么它可能会更健壮。您可以使用
{10,}
量词来执行此操作

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


此版本还确保匹配的
-
的数量是平衡的(如果它在开始时匹配了16个
-
字符,那么它在结尾也必须匹配16个
-
字符)。

您的内容可能包含
-
,但您仍然可以将行尾与
^
$
匹配,因此请尝试:

mystring.match(/(^-{84}$)(.*?)\1/m)[2]

您的内容可能包含
-
,但仍然可以将行尾与
^
$
匹配,因此请尝试:

mystring.match(/(^-{84}$)(.*?)\1/m)[2]

将其拆分为一行,该行仅由结尾可能带有白色字符的连续连字符组成,这将使其更加健壮

mystring.split(/^[ \t]*-+[ \t]*$/)[1]

将其拆分为一行,该行仅由结尾可能带有白色字符的连续连字符组成,这将使其更加健壮

mystring.split(/^[ \t]*-+[ \t]*$/)[1]

@奥尔德戈德多线模式。使
匹配换行符。很好地使用了back引用。注意,它假定两条
------
行的长度相等。@oldergod多行模式。使
匹配换行符。很好地使用了back引用。注意,它假设两行的长度相等……只希望收件人没有删除一行:)呵呵,是的,如果它来自用户。如果它是由系统生成的,那么你可以像这样进行超级精确的操作……只希望收件人没有删除一个:)呵呵,是的,如果它来自用户。如果它是系统生成的,那么你可以像这样超精确。