我正在使用RUBY的正则表达式来处理文本,例如
${1:aaa|bbbb}
${233:aaa | bbbb | ccc ccccc }
${34: aaa | bbbb | cccccccc |d}
${343: aaa | bbbb | cccccccc |dddddd ddddddddd}
${3443:a aa|bbbb|cccccccc|d}
${353:aa a| b b b b | c c c c c c c c | dddddd}
我想在每条管道之间获取修剪后的文本。例如,对于上例的第一行,我想要得到结果aaa和bbbb,对于第二行,我想要aaa、bbbb和ccc ccccc。现在我写了一段正则表达式和一段ruby代码来测试它:
array = "${33:aaa|bbbb|cccccccc}".scan(/\$\{\s*(\d+)\s*:(\s*[^\|]+\s*)(?:\|(\s*[^\|]+\s*))+\}/)
puts array
现在我的问题是该(?:\|(\s*[^\|]+\s*))+
部分无法创建多个组。我不知道如何解决这个问题,因为我在每行中需要的文本数量是可变的。任何人都可以帮忙吗?