过去几天我一直在努力解决这个问题。如果这是重复的话我很抱歉,在搜索这个特定问题时我无法找到所需的内容。
我有类名如下:
class="block underline primary"
className="text-center block primary-dark"
class="grey bg-black inline-block block"
我想使用Atom的正则表达式搜索功能搜索整个代码库,并用新的类名替换每个实例。我需要以下规则:
class=""
或className=""
block
而不是inline-block
,如果这就是我要搜索的内容。我目前有几乎做我需要的东西,但不考虑className
或class
并且会返回一个类中未包含的段落或内容我不想要:
(\s(block)\s)|(="(block)\s)|(\s(block)")
有没有什么方法可以一举找到并替换正则表达式?我知道我可能不会得到所有东西,因为类可以通过编程方式添加,但我希望尽可能多地查找和替换,而不是搞砸其他东西。非常感谢任何帮助或指导。
修改的
我还需要考虑以下类名:
class="block block-title blockDisabled"
所以最后我只想定位block
而不是其他任何目标。
答案 0 :(得分:1)
您可以使用以下表达式:
(className|class)="(?:block|block\s([^"]*)|([^"]*)\sblock|([^"]*)\sblock(?=\s)([^"]*))"
从那里,如果您要删除block
课程,则可以使用$1="$2$3$4$5"
进行替换。
但是,如果您想要替换block
类,如标题所示,那么您将使用$1="$2$3$4$5 replacement-class"
进行替换(其中字符串“replacement-class”是您所在的类将block
类替换为。
<强>解释强>
(className|class)
- 捕获属性名称="
- 匹配属性值的开头
(?:
- 启动非捕获组
block
- 匹配字符串block
|
- 或...... block\s([^"]*)
- 在字符串block
|
- 或...... ([^"]*)\sblock
- 在字符串block
|
- 或...... ([^"]*)\sblock(?=\s)([^"]*)
- 捕获字符串block
)
- 非捕获组的结束"
- 匹配关闭属性值