首页 > 解决方案 > 正则表达式 - 捕获多个组并将它们多次组合在一个字符串中

问题描述

我需要使用正则表达式组合一些文本,但是在尝试捕获和替换我的字符串时遇到了一些麻烦。例如 - 我需要从一开始就捕获数字,并将它们替换为 || 之间关闭的每个部分

我有:

||10||a||ab||abc||

我想:

||10||a10||ab10||abc10||

所以我需要捕获组 1 中的 '10' 和捕获组 2 中的 'a|ab|abc'

我已经尝试过类似的方法,但它对我不起作用(仅捕获一个 [az] 组)

(?=.*\|\|(\d+)\|\|)(?=.*\b([a-z]+\b))

标签: regexruby

解决方案


我会在没有复杂的正则表达式的情况下实现这一点。例如,您可以这样做:

input = "||10||a||ab||abc||"
parts = input.scan(/\w+/)   # => ["10", "a", "ab", "abc"]
parts[1..-1].each { |part| part << parts[0] }   # => ["a10", "ab10", "abc10"]

"||#{parts.join('||')}||"

推荐阅读