正则表达式:匹配未包含在[]中的空格

时间:2010-05-23 18:27:23

标签: regex

例如,对于此字符串,

div.img-wrapper img[title="Hello world"]

我希望匹配第一个空格而不是第二个空格(包含在[]中)。什么是正则表达式?

1 个答案:

答案 0 :(得分:4)

以下表达式将通过使用前瞻断言来完成工作。

_(?>[^[\]]*(\[|$))

下划线代表一个空间。此表达式不支持嵌套括号,因为正则表达式不足以表达嵌套的匹配结构。

_          Match the space and
(?>        assert that it is not inside brackets
  [^[\]]*  by matching all characters except brackets
  (        followed by either
    \[     an opening bracket (a space inside brackets
           will have a closing bracket at this position)
    |      or
    $      or no more characters (end of line).
  )
)

<强>更新

这是使用负面预测断言的另一个(也是更美丽的)解决方案。

_(?![^[\]]*])

它声称空格后面的下一个括号不是右括号。