2014-11-01 50 views
0

这里是我的正则表达式:为什么我的正则表达式不匹配空间

\b((?:Text|Header|Content))\=\"([^{].+?)\" 

我想匹配这样的字符串:

文字= “我的文本” WIDTH = “50”

这是工作的罚款 - 我得到:

捕获组1:特XT捕捉组2:我的文本

但是,当遇到这样的文字:

文本=” “WIDTH =” 50"

我得到以下结果:

捕获组1:文本捕获组2:“宽度=

我在做什么错我的正则表达式?

编辑:有一个在我的正则表达式的更加复杂 - 我不包括匹配的文本行:

文本=“{结合试验}”

回答

1

您正则表达式的这部分你的属性值(匹配引号内):

([^{].+?) 

这被解释为比其它{任何字符,接着是一个或多个字符。因此,您的正则表达式要求您的属性值至少包含两个字符,导致其在Text=" "中的单字符空间失败。

要解决这个问题,你可以改变你的量词来匹配零个或多个字符,而不是:

([^{].*?) 
+0

优秀 - 感谢:) – 2014-11-01 22:38:44

相关问题