如何在ruby中获取一段文本

时间:2012-11-22 04:14:59

标签: ruby regex

我在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

3 个答案:

答案 0 :(得分:5)

...试

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

RubyFiddle

但是,如果内容中有-,则会中断。如果您接受最低限度,例如10 -个字符,它可能会更强大。您可以使用{10,}量词来执行此操作。

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

RubyFiddle

此版本还确保-匹配的数量平衡(如果它在开头匹配16 -个字符,则必须匹配16 -个字符最后也是。)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

使用仅由连续连字符组成的行拆分,并在末尾添加可能的白色字符,这样可以使其健壮。

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