我在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
答案 0 :(得分:5)
...试
mystring.match(/-+(.*?)-+/m)[1]
但是,如果内容中有-
,则会中断。如果您接受最低限度,例如10 -
个字符,它可能会更强大。您可以使用{10,}
量词来执行此操作。
mystring.match(/(-{10,})(.*?)\1/m)[2]
此版本还确保-
匹配的数量平衡(如果它在开头匹配16 -
个字符,则必须匹配16 -
个字符最后也是。)
答案 1 :(得分:0)
您的内容可能包含-
,但您仍然可以将行结尾与^
和$
匹配,请尝试:
mystring.match(/(^-{84}$)(.*?)\1/m)[2]
答案 2 :(得分:0)
使用仅由连续连字符组成的行拆分,并在末尾添加可能的白色字符,这样可以使其健壮。
mystring.split(/^[ \t]*-+[ \t]*$/)[1]