【发布时间】:2018-08-09 20:57:46
【问题描述】:
我正在尝试编写一个正则表达式来查找 CSS 文件中的所有 ID 选择器。基本上,这意味着任何以#开头的单词,没关系
#\w+
除了 ... 颜色说明符也可以以 # 开头。所以我真正想要的是所有以 # 开头且不在 { 和 } 之间的单词。我不知道该怎么说。
我在 Notepad++ 中执行此操作,所以我需要那种风格的正则表达式。
顺便说一句,我的真正目标是从文件中删除所有不是 ID 选择器的内容,因此我最终只得到一个选择器列表。我的第一次尝试是
Find: [^#]*(#\w+)
Replace: \1\r\n
...然后点击全部替换。
但后来我遇到了颜色问题。
更新
有人要求举个例子。好的:
输入:
.foo {max-width: 500px;}
#bar {text-align: left;}
.splunge, #plugh {color: #ff0088;}
期望的输出:
#bar
#plugh
请注意,它包括大括号外的两个“磅字符串”,但不包括大括号内的两个“磅字符串”。
【问题讨论】:
-
#\w+(?!\s*})可能适合你 -
考虑到 FFFFFF 是一个有效的 HTML ID,我看不出您如何区分这两者。你的目标是什么类型的ID?您是否专门寻找作为方法调用目标的 ID? (例如
$("#myID")、document.querySelector("#myID")等)了解您的目标或期望的结果可能有助于我们提出替代想法。 -
@JosephMarikle 是的,我很快意识到我不能将测试建立在“看起来像一个有效的颜色代码”的基础上。 #FFFFFF 可能是一个不太可能的 ID,但肯定不是不可能的。而且,比如说,#BAD 或#FACE02 肯定会出现。这就是为什么我在想,如果它在大括号之间,我可以说它不是一个 ID,所以不有趣。我想这可以跳过媒体查询,现在我考虑一下。
-
@JosephMarikle 我的最终目标是我必须找到所有引用 ID 的 CSS,并且该 ID 在 Visual Basic 用户控件中。可以从另一个方向着手:找到 VB UC 中的所有 ID,然后在 CSS 中搜索它们。我不确定这会不会更容易。
-
您能显示示例输入和预期结果吗?