【发布时间】:2019-07-12 14:08:23
【问题描述】:
出于好奇(考虑到我花在这上面的时间),我想看看是否可以使用 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 从我的第一个示例中忽略该捕获组之外的所有内容,然后在该单个捕获组中查找分号,并将其转换为换行符。这样的事情是否可能,或者根据定义,这是否是一个两步转换?
【问题讨论】:
-
出于好奇,尝试
\s*(?:\G(?!\A)\s*|style=")(?:([^;"]+;)|")并替换为$1\n -
是的,这也很好用。唯一的问题是它总是删除
style=之前的任何空格,这可能并不总是可取的。不过,请随意将其写成答案,因为它确实解决了我的问题。 -
那么regex101.com/r/y7VU2i/1 就可以了。不过不需要重复答案。
-
说实话,您的方法略有不同,所以我认为这是一个不同的答案。这两种答案可能都有各自的优缺点。虽然我无法识别它们,但其他人可能会看到两者之间的明显区别,并评论为什么其中一个更好。
标签: regex sublimetext3 pcre