c#Regex匹配字符串的结尾?

时间:2015-07-10 05:30:16

标签: c# regex

我需要帮助来生成正则表达式,以便它匹配任何具有以下详细信息的字符串:

  1. 字符串应以括号结尾,其中只包含数字。
  2. 结束括号应仅出现在行尾而不是任何行 在哪里。
  3. 在括号开始前允许任何字符
  4. 括号结束后不允许使用任何字符
  5. 字符串应仅包含一组带数字的括号,即没有像((或))
  6. 这样的双括号

    我试过这个.\([0-9]+\)$,但这不是我要求的。

    例如:

    以下字符串应匹配:

    asds-xyz (1)
    asds+-xyz (12)
    as@ds-xyz (123)
    

    不应匹配以下字符串:

    asds-xyz ((1)
    asds-xyz ((12sdf))
    (123) asds-xyz
    xyz ((2)
    XYX (1))
    XYZ (1)(2)
    xyz(1)BXZ
    xyz(1)BXZ(2)
    

3 个答案:

答案 0 :(得分:2)

^[^\(\)]*\(\d+\)$

将完成这项工作......

\d = [0-9]

答案 1 :(得分:1)

我尝试修改您的模式的最小更改: 您必须使用[^键在您唯一需要的括号之前排除括号。像这样

[^\(\)]*\([0-9]+\)$

那会找到你喜欢的模式,如果你喜欢整个字符串,那么只需在开头添加^

答案 2 :(得分:0)

从你的正则表达式开始:.\([0-9]+\)$ 。匹配一切,但你需要量词。所以添加* .*\([0-9]+\)$ 但问题是,它会在最后一个括号之前匹配(和),如xyz ((2) 因此,为此做出负面设定,最终结果是:

^(.*[^\(\)])(\([0-9]+\))$