如何避免正则表达式相似模式重复?VS Code扩展适配需求
优化VS Code扩展中匹配Python三引号文档字符串的正则
需求背景
我在VS Code中使用一款可隐藏注释的扩展,希望通过正则匹配隐藏Python的三引号文档字符串("""字符串"""或'''字符串''')。这类内容虽不属于严格意义的注释,但常被当作注释使用,会让代码显得杂乱。扩展支持通过正则表达式匹配额外内容来隐藏,但我目前写出的正则存在大量冗余,想要优化。
限制条件
- 无法确认扩展使用的正则方言,但大概率为JavaScript/TypeScript正则
- 只能通过单个正则表达式实现需求,无法修改扩展代码添加额外逻辑
匹配规则要求
需要匹配的内容需符合以下格式:
行首任意空白符(制表符或空格) + 三个单/双引号 + 任意内容(允许最多两个连续的同类型引号) + 三个同类型引号
示例目标匹配内容:
"""This is a long Python ""docstring"" that sometimes is used as a comment. It can include newlines without using "\\n", although it will print "\\n" as a newline."""
当前实现的正则
以下正则可正常工作,但存在大量重复模式,写法冗余:
"regex": "(^(\\s)*([\"]{3})(([^\"]{1,2}[^\"])|[^\"])*([\"]{3}))|(^(\\s)*([']{3})(([^'][']{1,2}[^'])|[^'])*([']{3}))", "flags": ""
提问
有没有办法避免这种重复的正则模式?我记得正则中有类似“命名捕获组”的特性,但不清楚如何在这个场景中应用。
内容的提问来源于stack exchange,提问作者Carlos González
相关产品推荐
相关产品推荐

