PowerShell正则修改CSS仅替换color属性失败求助
解决PowerShell正则替换CSS属性错误的问题
你的问题出在正则表达式的贪婪匹配上:原正则里的[^{}]+会尽可能多的匹配字符,导致从.actionBlock[selected] {开始,一直匹配到background-color:里的color子串,最终错误替换了background-color属性。
修正后的PowerShell脚本
$file = "theme.css" $content = Get-Content $file -Raw # 使用非贪婪匹配 + 精准定位独立的color属性 $content = $content -replace '(\.actionBlock\[selected\]\s*{[^{}]*?color:\s*)([^;]+)(;)', '$1#FFF; /* EDITED : $2 */' Set-Content -Path $file -Value $content
关键修改点
把原正则中的[^{}]+改成[^{}]*?:
[^{}]+是贪婪匹配,会吃掉color:之后直到}前的所有内容,包括background-color:里的color[^{}]*?是非贪婪匹配,匹配到第一个color:就停止向后延伸,确保只定位到目标的color属性行
效果验证
修改后脚本会精准替换目标行:
原CSS片段:
.actionBlock[selected] { color: var(--gray11); background-color: var(--gray11); }
替换后变为:
.actionBlock[selected] { color: #FFF; /* EDITED : var(--gray11) */ background-color: var(--gray11); }
内容的提问来源于stack exchange,提问作者user2976880
相关产品推荐
相关产品推荐

