2015-10-04 37 views
1
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. 因此,我必须构造6 .NET中的正则表达式如下:
  6. 正则表达式是否包含一些规则来匹配只有带符号数字应该用括号括起来的条件。在.NET条件判断正则表达式

  7. THX

回答

0

你不需要 6正则表达式,所有这一切都可以装在单个之一:

^(?: 
    (?<sign>\([-+])? 
    (?:[0-9]+')? 
    [0-9]+(?:.[0-9]+)? 
    (?:/[0-9]+(?:.[0-9]+)?)? 
    (?(sign)\)) 
)$ 

Demo

的一部分,你被要求是这样的:

  • 捕获一个(随后+-在可选的命名组:

    (?<sign>\([-+])? 
    
  • 匹配数量:它的正则表达式

  • 如果sign组相匹配的中间部分,然后匹配一个)

    (?(sign)\)) 
    

    这是你要找的条件正则表达式运算符:

    (?(groupName)thenExpression|elseExpression) 
    

    |elseExpression部分是可选的。