gpt4 book ai didi

ruby - 正则表达式 : back-reference an optional grouping

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:24 24 4
gpt4 key购买 nike

我正在使用正则表达式,代码如下:

Regexp.new("^(?<ast>\\\*\\\*)?(?<key>#{@meta_types.join("|")}):(?<value>.*)\\k<ast>?$", Regexp::MULTILINE)

我要做的是像这样解析基本元数据:

书名:某本书的书名或其他东西

除此之外,有些行周围有 **,有些则没有。问题是 <value> 下的某些项目跨越多行,所以我不能做 ?<value>.*? .本质上,我需要要求第二个 <ast>当且仅当存在第一个 <ast> 时分组分组礼物。

有没有办法做到这一点,或者有人有更好的解决方案吗?

*(这是一个 Word 到 Markdown 的转换,有些行被加粗了。)

编辑:解决方案

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

最佳答案

替换:

(?<ast>\\\*\\\*)?

与:

(?<ast>(?:\\\*\\\*)?)

并删除最后的“?”在最后。

这将强制第一个捕获组存在,即使它什么都不匹配。

关于ruby - 正则表达式 : back-reference an optional grouping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com