首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET中具有条件判断的正则表达式

.NET中具有条件判断的正则表达式
EN

Stack Overflow用户
提问于 2015-10-04 06:17:56
回答 1查看 49关注 0票数 1
代码语言:javascript
复制
private static Regex regex_Unsigned_Integer = new Regex("^(([0-9]{1})|([1-9][0-9]+))$");
private static Regex regex_Signed_Integer = new Regex("^([+|-]?)(([0-9]{1})|([1-9][0-9]+))$");
private static Regex regex_Unsigned_Factor = new Regex("^(([0-9]+[/][1-9]{1}[0-9]*)|([1-9]{1}[0-9]*['][1-9]+[/][1-9]{1}[0-9]*))$");
private static Regex regex_Signed_Factor = new Regex("^([+|-]?)(([0-9]+[/][1-9]{1}[0-9]*)|([1-9]{1}[0-9]*['][1-9]+[/][1-9]{1}[0-9]*))$");
private static Regex regex_Unsigned_Decimal = new Regex("^((([0-9]{1})|([1-9]{1}[0-9]+))[.][0-9]+)$");
private static Regex regex_Signed_Decimal = new Regex("^([+|-]?)((([0-9]{1})|([1-9]{1}[0-9]+))[.][0-9]+)$");
  1. 我想用正则表达式来匹配一些数字,例如(-1),(-1.3),1'3/7,(+3),3;
  2. 然而,它包含了一个特殊的条件,即只有符号号应该被括号包围;
  3. Illegde字符串:(3) -3 +1'3/7
  4. 正确字符串: 3,(-3),(+1'3/7)
  5. 因此,我必须在.NET中构建6个Regex,如下所示:
  6. 正则表达式是否包含一些规则以匹配只应用括号包围有符号号的条件。
  7. Thx
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-04 11:29:07

您不需要6个正则表达式,所有这些都可以放在一个单独的中:

代码语言:javascript
复制
^(?:
  (?<sign>\([-+])?
    (?:[0-9]+')?
    [0-9]+(?:.[0-9]+)?
    (?:/[0-9]+(?:.[0-9]+)?)?
  (?(sign)\))
)$

演示

你想要的是:

  • 在一个可选的命名组中捕获一个(,然后是+-: (?(-+)?
  • 匹配数字:这是正则表达式的中间部分
  • 如果sign组匹配,则匹配): (签署) 这是您正在寻找的条件regex运算符: (?(GroupName)-然后表示 |elseExpression部分是可选的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32930607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档