1

正则表达式的新手。我想验证这种格式:

  • 允许使用任何字符,'{' 和 '}' 除外。
  • '{' 字符必须后跟特定字符串之一

在这些字符串之后,任何字符都可以去

  • 每个 '{' 必须有一个结束 '}'
  • 允许嵌套“{”

例子:

abc{FILE:any text} def {FILE:mno{ENV:xyz}}

FILE:并且ENV:是“{”字符后所需的特定字符串的示例。我写了这个正则表达式:

^
(
  [^\{\}]+
  |
  (?<Depth>\{)(FILE:|ENV:)
  |
  (<-Depth>\})
)*
(?(Depth)(?!))
$

但它不符合我想要的格式。我想念什么?
非常感谢。
编辑:做同样的链接,我希望成功:-) MSDN其他网站

4

1 回答 1

3

您忘记了平衡组中的问号。

string pattern = @"(?x)
^
(?:
    [^{}]+
    |
    (?<Depth>{) (?:FILE|ENV):
    |
    (?<-Depth>})
)*
(?(Depth)(?!))
$
";

应该匹配字符串,如a {FILE: {ENV: foo } bar } baz

于 2012-06-13T19:09:18.810 回答