【发布时间】:2016-03-09 19:59:34
【问题描述】:
我有以下 CSS 标记。
.previous-container{
float:left;
}
.primary-commands {
float:right;
}
使用正则表达式语法搜索 (?<=[\s,;])([a-zA-Z\-]+): 它会按预期突出显示 CSS 属性名称,但是,单击替换时不会替换任何内容。我尝试在替换行中使用组标记语法,例如$[nth group] 和任何纯文字字符串替换。无论我的尝试如何,它都不会用任何东西替换匹配的字符串。我正在使用记事本++ 6.7.5 版。也许我在这里遗漏了一些明显的东西?
【问题讨论】:
-
如果您不想陷入疯狂(npp 有时会有完全疯狂的行为),请使用 PHP 和 sabberworm:github.com/sabberworm/PHP-CSS-Parser/tree/master/lib/Sabberworm/…
-
是的,对我来说似乎是一个错误。我认为,前瞻和负后瞻似乎可以正常工作,如果您点击“全部替换”,或者如果您将文本切成两半以便只找到一个匹配项,那么您的示例似乎可以正常工作。
-
在文本编辑器 UltraEdit v22.20 中使用 Perl 正则表达式替换
(?<=[\s,;])([a-zA-Z\-]+):没有问题。在记事本++中使用作为搜索字符串([\s,;])([a-zA-Z\-]+):并开始用$1替换字符串怎么样,即使用捕获组来捕获必须存在于字符串左侧的字符才能真正找到并在开始时在替换字符串中反向引用该字符以保留它替换时未修改? -
@Mofi,我喜欢这样的解决方法。由于它在开始时是一组匹配的组(而不是可变数量的匹配组),这应该可以满足我的需要。谢谢。
-
@femtoRgon 我没有尝试“全部替换”按钮,很好的观察。这听起来可能是解决此问题的另一种方法。我使用单次替换来监控替换以确保它正常工作。这个正则表达式只是我试图在 1000 多行 CSS 文件上使用的更大表达式的一部分。
标签: regex search replace notepad++ lookbehind