1
我使用正则表达式,使用此代码:正则表达式:反向引用一个可选的分组
Regexp.new("^(?<ast>\\\*\\\*)?(?<key>#{@meta_types.join("|")}):(?<value>.*)\\k<ast>?$", Regexp::MULTILINE)
什么我要为是解析基本的元数据,像这样:
标题:标题部分一本书或其他东西
除了一些行在他们周围有**,其他人没有。问题是<value>
下的一些项目跨越多行,所以我不能做?<value>.*?
。基本上,我需要第二个<ast>
分组,当且仅当第一个<ast>
分组存在。
有没有办法做到这一点,或有人有更好的解决方案?
*(这是一个词对降价的转换,还有一些线路进行了加粗。)
编辑:解
r = Regexp.new("(?<ast>(?:\\\*\\\*)?)(?<key>Title):(?<value>[^\*]*)\k<ast>", Regexp::MULTILINE)
s = "**Title: Some pieces of text with a random\nnewline thrown in for good measure**\n"
r.match s
嗯,这似乎并不适合我......在编辑中发布结果。谢谢您的帮助。 – acsmith
接受答案,因为它实际上是我的问题的解决方案。只需要修复一个愚蠢的错误(忘记在双引号内跳过) – acsmith