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

时间:2019-07-12 14:08:23

标签: regex sublimetext3 pcre

出于好奇,比起其他原因(考虑到我花了很多时间),我试图查看是否可以在Sublime Text 3中使用regex替换功能

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从我的第一个示例中忽略捕获组之外的所有内容,然后在单个捕获组内查找分号,并将其转换为换行符。这样的事情是否有可能发生,或者按照定义是两步转换?

1 个答案:

答案 0 :(得分:2)

您可以使用此PCRE正则表达式进行匹配:

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

并替换为:

$1\n

RegEx Demo

\G在上一场比赛的末尾或首场比赛的字符串开头声明位置。通过放置(?!^),我们可以确保\G在行的开头不匹配。