需要regex.match组中的值

时间:2015-12-29 07:31:27

标签: c# asp.net regex

我希望匹配正则表达式,使得一个组中的符号(+或 - )和其他组中的符号。图可能没有任何符号(+或 - )

实施例

 [-] 87.90
 [+] 87.78
 (-) 87.90
 (+) 87.78
  89
 -89.56
 - 89.98

我使用了以下正则表达式

^\W*(\-|\+|)\W*(\d+(\.\d+)?)

由此我在第1组中变空 如果我使用

^\W*(\-|\+)\W*(\d+(\.\d+)?)

然后第三个数字将不匹配。所以简而言之,我希望将数字与(+或 - )或没有任何符号匹配。

1 个答案:

答案 0 :(得分:0)

第1组为空,因为\W*贪婪地匹配所有非单词字符,即所有括号和符号。

您应该在模式中指定文字括号,而字符类将是一个更自然的构造,以匹配+-

(?:\(?([-+])\)?)?\p{Zs}*(\d+(\.\d+)?)

请参阅regex demo(如果您需要完整的字符串匹配,请在开始时使用^,并在模式结尾使用$

正则表达式匹配:

  • (?:\(?([-+])\)?)? - 可选的非捕获组((?:...)),可选地匹配(,后跟加号或减号(组1),然后是可选的{{ 1}}
  • ) - 零个或多个空白符号
  • \p{Zs}* - (第2组)一个或多个数字后跟一个可选的捕获组(第3组),该组与一个句点后跟一个或多个数字匹配。

结果:

enter image description here