用于在 Atom 编辑器中的整个代码库中替换 class 名称的正则表达式
Regex for replacing class names throughout codebase in Atom Editor
最近几天我一直在为此苦苦挣扎。如果这是重复的,我深表歉意,我在搜索这个特定问题时找不到我需要的东西。
我有 class 个名字,如下所示:
class="block underline primary"
className="text-center block primary-dark"
class="grey bg-black inline-block block"
我想使用 Atom 的正则表达式搜索功能搜索整个代码库,并用新的 class 名称替换每个实例。我需要以下规则:
- 确保字符串包含在
class=""
或 className=""
中
- 确保它只匹配确切的词,所以在上面它只会匹配
block
而不是 inline-block
如果那是我要搜索的。
我目前有这个 几乎 可以满足我的需要,但不考虑 className
或 class
并且会 return我不想要 class 中未包含的段落或内容:
(\s(block)\s)|(="(block)\s)|(\s(block)")
有什么方法可以一举完成正则表达式查找和替换吗?我知道我可能无法获得所有内容,因为可以通过编程方式添加 classes,但我希望通过查找和替换获得尽可能多的信息,而不是搞砸其他事情。非常感谢任何帮助或指导。
编辑
我还需要考虑如下 class 个名称:
class="block block-title blockDisabled"
所以最后我只想瞄准 block
而不是别的。
您可以使用以下表达式:
(className|class)="(?:block|block\s([^"]*)|([^"]*)\sblock|([^"]*)\sblock(?=\s)([^"]*))"
从那里开始,如果您想删除 block
class,您可以使用 =""
进行替换。
但是,如果您想要替换 block
class,正如您的标题所暗示的,那么您将使用 =" replacement-class"
进行替换(其中字符串 "replacement-class" class 是您要用 block
class 替换的 class。
解释:
(className|class)
- 捕获属性名称
="
——匹配属性值的开头
(?:
- non-capturing 组的开始
block
- 匹配字符串 block
|
- 或...
block\s([^"]*)
- 捕获字符串 block
之后的 classes
|
- 或...
([^"]*)\sblock
- 捕获字符串 block
之前的 classes
|
- 或...
([^"]*)\sblock(?=\s)([^"]*)
- 捕获字符串 block
周围的 classes
)
- non-capturing 组结束
"
——匹配属性值的结尾
最近几天我一直在为此苦苦挣扎。如果这是重复的,我深表歉意,我在搜索这个特定问题时找不到我需要的东西。
我有 class 个名字,如下所示:
class="block underline primary"
className="text-center block primary-dark"
class="grey bg-black inline-block block"
我想使用 Atom 的正则表达式搜索功能搜索整个代码库,并用新的 class 名称替换每个实例。我需要以下规则:
- 确保字符串包含在
class=""
或className=""
中
- 确保它只匹配确切的词,所以在上面它只会匹配
block
而不是inline-block
如果那是我要搜索的。
我目前有这个 几乎 可以满足我的需要,但不考虑 className
或 class
并且会 return我不想要 class 中未包含的段落或内容:
(\s(block)\s)|(="(block)\s)|(\s(block)")
有什么方法可以一举完成正则表达式查找和替换吗?我知道我可能无法获得所有内容,因为可以通过编程方式添加 classes,但我希望通过查找和替换获得尽可能多的信息,而不是搞砸其他事情。非常感谢任何帮助或指导。
编辑
我还需要考虑如下 class 个名称:
class="block block-title blockDisabled"
所以最后我只想瞄准 block
而不是别的。
您可以使用以下表达式:
(className|class)="(?:block|block\s([^"]*)|([^"]*)\sblock|([^"]*)\sblock(?=\s)([^"]*))"
从那里开始,如果您想删除 block
class,您可以使用 =""
进行替换。
但是,如果您想要替换 block
class,正如您的标题所暗示的,那么您将使用 =" replacement-class"
进行替换(其中字符串 "replacement-class" class 是您要用 block
class 替换的 class。
解释:
(className|class)
- 捕获属性名称="
——匹配属性值的开头(?:
- non-capturing 组的开始block
- 匹配字符串block
|
- 或...block\s([^"]*)
- 捕获字符串block
之后的 classes
|
- 或...([^"]*)\sblock
- 捕获字符串block
之前的 classes
|
- 或...([^"]*)\sblock(?=\s)([^"]*)
- 捕获字符串block
周围的 classes
)
- non-capturing 组结束
"
——匹配属性值的结尾