0

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

3 回答 3

5

尝试...

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

红宝石小提琴

但是,如果-您的内容中有 a ,这将中断。如果您接受最低限度(例如 10 个-字符),它可能会更健壮。您可以使用{10,}量词来执行此操作。

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

红宝石小提琴

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

于 2012-11-22T04:17:44.157 回答
0

将其拆分为仅由连续连字符组成的行,末端可能带有白色字符,这将使其健壮。

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

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

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