使用正则表达式在支架块内交换/匹配“left”和“right”

时间:2014-04-30 01:14:27

标签: css regex replace

我试图交换"离开"用"对"和"对"与"左"这样:

.left {
  left: 10px;
  float: right;
}

会来:

.left {
  right: 10px;
  float: left;
}

什么样的表达式匹配"左"或"对"但不是" .left"只在括号内?

2 个答案:

答案 0 :(得分:1)

以下方法适用于.NET或PCRE(例如PHP)。在Python中,使用\1\6\5\2\7代替$1$6$5$2$7进行替换。这些替换语法中的任何一个实际上都可以在PCRE / PHP中使用。

此方法依赖于条件和多个捕获组。这比TML的解决方案更复杂的原因是这种方法特别确保你的字符串具有右/左或左/右模式,即它将忽略左/左或右/右。

搜索:

(?s)(\.(?:left|right)\s*{\W+)((left)|(right))(:.*?float:\s*)((?(3)right|left))(;.*?})

替换:

$1$6$5$2$7

答案 1 :(得分:0)

确切的语法在很大程度上取决于您用于执行正则表达式的语言,但here's an example使用Python语法。

你会在那里找到的正则表达式如下:

/({[^}]*)left\s*:(.*?)}/s

替换表达式为:

\1right:\2}