Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包含[:alnum:]POSIX字符类的正则表达式与字符串C#不匹配,但联机工具的计算结果为ok_C#_Regex - Fatal编程技术网

包含[:alnum:]POSIX字符类的正则表达式与字符串C#不匹配,但联机工具的计算结果为ok

包含[:alnum:]POSIX字符类的正则表达式与字符串C#不匹配,但联机工具的计算结果为ok,c#,regex,C#,Regex,我有一个正则表达式 (?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'\d+).(?'Build'\d+)(?'PreRelease'-[[:alnum:]]*)?(?'Meta'\+[[:alnum:]]*)?) - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2})) 应该与SCPI字符串匹配 Co

我有一个正则表达式

(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'\d+).(?'Build'\d+)(?'PreRelease'-[[:alnum:]]*)?(?'Meta'\+[[:alnum:]]*)?) - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))
应该与SCPI字符串匹配

Company - Model - V1.0.0.1718-RC1 - 20190821
如果我用一个在线工具尝试正则表达式,一切正常,字符串与正则表达式匹配

现在我试着用正则表达式和C#来计算命令答案,结果总是错误的

    var regex = @"(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+).(?'Minor'\d+).(?'Bugfix'\d+).(?'Build'\d+)(?'PreRelease'-[[:alnum:]]*)?(?'Meta'\+[[:alnum:]]*)?)" - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))";

    // 
    responce = await rs232Device.SendCommand(query, DefaultTimeout);

    var match  = Regex.Match(responce.Message, regex, RegexOptions.IgnoreCase); 
    //
    Assert.That(match.Success, Is.True); 
我从正则表达式中发现编译日期
-(?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))
一切正常


但是我不知道为什么它不能与C中的完整正则表达式一起工作,因为它可以匹配字符串。

.NET正则表达式引擎不支持POSIX字符类。这里有
[[:alnum:][]
,用
\w
(任意)或
[\p{L}\p{N}]
(任意字母或数字)或
[^\w\p{Pc}]
(除连接器标点以外的任何字符,如
\u
)将使其工作

请参阅其他POSIX字符类示例映射(它们可能无法完全相同但至少类似地工作):


使用与.NET兼容的测试仪。.NET正则表达式不支持POSIX字符类,您在这里有
[[:alnum:]
,将其替换为
[^\W\p{Pc}]
\W
将使其正常工作。除此之外,避开文字点。 POSIX .NET Description [:alpha:] \p{L} Any letters (\p{L} matches only those from the BMP plane) [:alnum:] [\p{L}\p{N}] Any letters or digits [:digit:] \p{N} or \d Any digits (there is also a [:d:] POSIX variation) [:space:] \s or \p{Z} Any whitespace [:blank:] [\p{Zs}\t] Any horizontal whitespace POSIX .NET Description [:ascii:] [\x00-\x7E] ASCII character set [:xdigit:] [0-9a-fA-F] Chars that are used to define hex values
(?'Conpany'Company) - (?'Model'Model) - (?'Version'V(?'Major'\d+)\.(?'Minor'\d+)\.(?'Bugfix'\d+)\.(?'Build'\d+)(?'PreRelease'-\w*)?(?'Meta'\+\w*)?) - (?'CompileDate'(?'Year'\d{4})(?'Month'\d{2})(?'Day'\d{2}))