是否可以再次评估捕获组的内容?

Is it possible to assess the contents of a capture group again?

更多的是出于好奇(考虑到我在这上面花费的时间),我想看看我是否可以使用 Sublime Text 3 中的替换函数和正则表达式来转换

style="bla: bla; bla:bla;"

进入

bla:bla;
bla:bla;

我可以只为 bla: bla; bla:bla; 创建捕获,没有 style 或引号:

(?<=\sstyle=")(.*)(?=") https://regex101.com/r/tctJti/1

不过在那之后,我卡住了。我也尝试过分别捕获每个 bla:bla,但这似乎甚至没有帮助,因为捕获组然后只保留它捕获的最后一个东西:

\s*style="((.*?;)*)" https://regex101.com/r/tctJti/2

我需要的是能够告诉 sublime 忽略第一个示例中捕获组之外的所有内容,然后在单个捕获组内查找分号,并将它们转换为换行符。这样的事情甚至可能吗,或者根据定义是两步转换吗?

您可以使用这个 PCRE 正则表达式来匹配:

(?:\bstyle="|(?!^)\G)([^;"]+;?)\s*(?:"$)?

并替换为:

\n

RegEx Demo

\G 断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。通过放置 (?!^) 我们确保 \G 在行的开头不匹配。