为什么我的正则表达式与空间不匹配

时间:2014-11-01 22:23:03

标签: regex

这是我的正则表达式:

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

我正在尝试匹配这样的字符串:

  

Text =“My Text”Width =“50”

工作正常 - 我得到:

  

捕获组1:文本捕获组2:我的文本

但是当它遇到这个文本时:

  

Text =“”Width =“50”

我得到以下结果:

  

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

我的正则表达式出了什么问题?

编辑:我的正则表达式中增加了一个复杂功能 - 我排除了匹配的文字行:

Text =“{Binding Test}”

1 个答案:

答案 0 :(得分:1)

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

([^{].+?)

这被解释为{以外的任何字符,后跟一个或多个字符。因此,正则表达式要求您的属性值至少包含两个字符,导致Text=" "中的单字符空格失败。

要解决此问题,您可以将量词更改为匹配零个或多个字符:

([^{].*?)