Notepad++ Regex Find/Replace 使用 Look Behind 不工作
Notepad++ Regex Find/Replace Using Look Behind not Working
我有以下 CSS 标记。
.previous-container{
float:left;
}
.primary-commands {
float:right;
}
使用正则表达式搜索 (?<=[\s,;])([a-zA-Z\-]+):
它会按预期突出显示 CSS 属性 名称,但是,单击“替换”后不会替换任何内容。我尝试在替换行中使用组标记语法,例如$[nth group]
和任何纯文字字符串替换。无论我如何尝试,它都不会用任何东西替换匹配的字符串。我正在使用 notepad++ 版本 6.7.5。也许我在这里遗漏了一些明显的东西?
根据对原始问题的评论,这里有一些解决方法可以解决我的问题。
选项#1
将正则表达式 (?<=[\s,;])
的 lookbehind 部分替换为简单的非 lookbehind 组匹配语句,例如 ([\s,;])
。这将继续将搜索结果限制为以 lookbehind 中的指定字符开头的字符串。唯一需要注意的是,在我的替换字符串中,例如
我需要删除不需要的匹配字符,这些字符不应成为替换字符串的一部分。
选项 #2
使用 "Replace All" 按钮。在您的正则表达式语句中使用正向后视而不是使用 "Replace" 按钮进行单个替换时,它将正确执行替换。
我选择选项 #1 只是因为它实现了我的需要,同时允许我仍然一次执行单个替换。对于较大的文档,在彻底测试我的正则表达式之前,我不想使用 "Replace All"。
我有以下 CSS 标记。
.previous-container{
float:left;
}
.primary-commands {
float:right;
}
使用正则表达式搜索 (?<=[\s,;])([a-zA-Z\-]+):
它会按预期突出显示 CSS 属性 名称,但是,单击“替换”后不会替换任何内容。我尝试在替换行中使用组标记语法,例如$[nth group]
和任何纯文字字符串替换。无论我如何尝试,它都不会用任何东西替换匹配的字符串。我正在使用 notepad++ 版本 6.7.5。也许我在这里遗漏了一些明显的东西?
根据对原始问题的评论,这里有一些解决方法可以解决我的问题。
选项#1
将正则表达式 (?<=[\s,;])
的 lookbehind 部分替换为简单的非 lookbehind 组匹配语句,例如 ([\s,;])
。这将继续将搜索结果限制为以 lookbehind 中的指定字符开头的字符串。唯一需要注意的是,在我的替换字符串中,例如
我需要删除不需要的匹配字符,这些字符不应成为替换字符串的一部分。
选项 #2
使用 "Replace All" 按钮。在您的正则表达式语句中使用正向后视而不是使用 "Replace" 按钮进行单个替换时,它将正确执行替换。
我选择选项 #1 只是因为它实现了我的需要,同时允许我仍然一次执行单个替换。对于较大的文档,在彻底测试我的正则表达式之前,我不想使用 "Replace All"。