需要正则表达式来删除Notepad ++中不必要的字符串

时间:2014-10-17 12:38:27

标签: regex notepad++

我有大的css文件,需要正则表达式(Notepad ++)才能获得特定css值找到的元素和css选择器。在下面的示例中,我需要按值123456

获取元素和选择器
header #objectnav nav a {
  border-right: solid 1px #c0c0c0;
  border-left: solid 1px #f4f9ff;
  color: #123456;
}

a:hover {
  color: #654321;
}

#hints .hint {
  background-color: #f4f9ff;
  border: 1px solid #e0f0ff;
  color: #123456;
  margin: 0 0 30px 0;
  position: relative;
}

退出时我希望关注

header #objectnav nav a
color

#hints .hint
color

或者,如果可能的话

header #objectnav nav a^color
#hints .hint^color

1 个答案:

答案 0 :(得分:1)

我这样做只是为了挑战:

以下正则表达式将查找包含文本123456的所有规则作为值:

[^{}\s][^{}]*\{[^}]*?[-\w]+\s*:[^;}]*?123456[^}]*\}

但那只是一个基本的正则表达式。更具挑战性的部分是我想知道是否可以生成一个报告,例如你要求使用的除了Notepad ++之外的报告。事实证明这是可能的。

替换以下模式:

\s*([^{}]+?)\s*\{[^}]*?(?(?=([-\w]+)\s*:[^;}]*?123456)[^}]*|[^}])*\}\s*

使用以下替换字符串:

(?2$1^$2:)

或者这个取决于你喜欢的输出:

(?2$1\r\n$2\r\n\r\n:)

我没有对它进行过广泛的测试,但它适用于您提供的测试用例。