Notepad++ 替换两个随机字母之间的破折号而不使用空格?

Notepad++ 替换两个随机字母之间的破折号而不使用空格?

我需要将一些 CSS 类从破折号替换为下划线(-_

例子:

.a-2Vndt-.wrapper-1VLyxH, .people-u6dGxF.active-2UF8Zh, .ListItem-u6dGxF:hover, .ListItem-u6dGxF { }

如您所见,破折号两侧(或外侧)的字母是随机的,不相同,并且没有空格。它们需要变成下划线。文档中的破折号确实不是也需要更改。因此,一般替换会破坏它而不是修复它。有人知道如何将整个文档中所有随机字符之间的破折号(并且只替换那些破折号)替换为下划线吗?

改变.people-u6dGxF变成.people_u6dGxF,或.user2-hx变成.user2_hx

别管:在 、 之前或之后带有空格的破折号--或双--

正在修改的文本片段:

/* -- Complications and Combinations -- */
.compact-2Nkcau .timestamp-p1Df1m, .cozy-VmLDNB .timestamp-p1Df1m.alt-1dvXnH, .edited-1v5nT8 {
    font-family: Helvetica !important;
    font-size: 9px !important;
    width: 48px;
}
/* -- This CSS document is very large and will require multiple passes -- */
.text-sm-medium-3Pz3rB, .text-sm-1-3Zj3Iv {
    font-family: Helvetica !important;
    font-size: 12px !important;
}

谢谢。

答案1

根据您定义字符的方式,您可以使用一些正则表达式。如果您指的是字母表中的字符,请使用。(?<=[A-Za-z])-(?=[A-Za-z])来查找任何字母之间的任何 -。

(?<=[A-Za-z])寻找目标前面的任何字母*

-我们的目标

(?=[A-Za-z])寻找目标后的任何字母*

如果数字也需要考虑,可以将其添加到我们的前瞻和后瞻目标中。为此,将其更改[A-Za-z][A-Za-z0-9]

(?<=[A-Za-z0-9])-(?=[A-Za-z0-9])是我们新的表达方式。

如果你想任何使用非空格字符(?<=[^ ])-(?=[^ ])。它与上面的相同,但[A-Za-z]我们不使用字母表中的字母来包裹目标,而是使用非空格的任何内容来包裹它[^ ]


* 也可以看看此论坛主题了解有关查看单词/字符组的更多信息。

还有一般的GitHub 文档用于 Notepad++ 高级搜索。

答案2

我猜您只想替换类名中的破折号。

  • Ctrl+H
  • 找什么:(?:\.|\G)\w+\K-
  • 用。。。来代替:_
  • 打钩 环绕
  • 选择 正则表达式
  • Replace all

解释:

(?:         # non capture group
    \.          # a dot
  |           # OR
    \G          # restart from last match position
)           # end group
\w+         # 1 or more word characters
\K          # forget all we have seen until this position
-           # a dash

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容