是否可以再次评估捕获组的内容?
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
\G
断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。通过放置 (?!^)
我们确保 \G
在行的开头不匹配。
更多的是出于好奇(考虑到我在这上面花费的时间),我想看看我是否可以使用 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
\G
断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。通过放置 (?!^)
我们确保 \G
在行的开头不匹配。