Ruby正则表达式匹配关键字之间的所

时间:2011-12-05 21:51:07

标签: ruby regex parsing

这是关于Ruby的正则表达式。

我有一个字符串,看起来像:

“--- \ n- PARSEFROMHERE你可以想象数字特殊字符ENDPARSEFROMHERE \ n PARSEFROMHERE任意你可以想象数字特殊字符ENDPARSEFROMHERE \ n”

我如何匹配PARSEFROMHERE ENDPARSEFROMHERE与某些正则表达式之间的所有内容?

谢谢!

2 个答案:

答案 0 :(得分:3)

试试这个:

regexp = /\bPARSEFROMHERE\b(.*?)\bENDPARSEFROMHERE\b/m

所有内容都存储在反向引用中1.但如果出于某种神奇的原因你有“不平衡”分隔符,这个正则表达式将会失败,悲惨

编辑:

regexp = /\sPARSEFROMHERE\s(.*?)\sENDPARSEFROMHERE\b/m

根据您的示例,PARSEFROMHERE始终在空格之后。与ENDPARSEFROMHERE相同,但这以\n结束,所以我在那里切换了边界锚点。

答案 1 :(得分:0)

简单,只要“ENDPARSEFROMHERE”没有出现在匹配中:

PARSEFROMHERE(.+)ENDPARSEFROMHERE

然而,这有问题。这也将从一个ENDPARSEFROMHERE匹配到下一个ENDPARSEFROMHERE,所以如果你的开始和结束标签不平衡,你就会遇到问题。