是否可以将PHP Regex(使用子程序调用)转换为C#regex?

Dar*_*mas 5 php c# regex

示例php regex(下面)使用子例程调用来工作.

如果我尝试将它与C#Regex类一起使用,我会收到一个错误: Unrecognized grouping construct

是否可以将其重写为C#regex语法?

它是一个简单的翻译,还是需要使用另一种(正则表达式)方法?

如果它不可能是它所使用的东西的名称是什么,那么我可以将它添加到这个问题中,以使其对具有相同问题的其他人更有用吗?

PHP适用于所有json RFC测试数据

$pcre_regex = '
  /
  (?(DEFINE)
     (?<number>   -? (?: [1-9]\d*| 0 ) (\.\d+)? (e [+-]? \d+)? )    
     (?<boolean>   true | false | null )
     (?<string>    " (?>[^"\\\\]+ | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
     (?<array>     \[  (?:  (?&json)  (?: , (?&json)  )*  )?  \s* \] )
     (?<pair>      \s* (?&string) \s* : (?&json)  )
     (?<object>    \{  (?:  (?&pair)  (?: , (?&pair)  )*  )?  \s* \} )
     (?<json>   \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* )
  )
  \A (?&json) \z
  /six   
';
Run Code Online (Sandbox Code Playgroud)

而不是在C#工作

string pattern = @"(?(DEFINE)
 (?<number>   -? (?: [1-9]\d* | 0 ) (\.\d+)? (e [+-]? \d+)? )    
 (?<boolean>   true | false | null )
 (?<string>    "" (?>[^""\\\\]+ | \\\\ [""\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* "" )
 (?<array>     \[  (?:  (?&json)  (?: , (?&json)  )*  )?  \s* \] )
 (?<pair>      \s* (?&string) \s* : (?&json)  )
 (?<object>    \{  (?:  (?&pair)  (?: , (?&pair)  )*  )?  \s* \} )
 (?<json>   \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* ))
\A (?&json) \z
";
    string input = @"[{\"Example\": \"data\"}]";
    RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;

    bool isValid = Regex.IsMatch(input, pattern, options);
Run Code Online (Sandbox Code Playgroud)

编辑:这个问题不是关于在json中使用正则表达式,而是关于如何在C#中执行某些操作(子例程调用),这可以在PHP正则表达式中完成

只是因为在C#中有一种解析json的方法,不能回答这个问题.请保留您对主题的回答和评论.

Dar*_*mas 4

这并不能直接回答问题,而是一种解决方法。

有一个名为 PCRE.NET 的项目,而不是使用 BCLRegex类,它使用 C# 函数调用包装 PCRE 正则表达式引擎(与 PHP 示例中使用的引擎相同)。

这将允许在 C# 领域中使用正则表达式和子例程调用。