【发布时间】:2017-11-21 08:04:50
【问题描述】:
我打算使用我在 regex101.com 上构建的正则表达式到 C# 应用程序中的正则表达式:
((?'d'(?:3[0-9]\s+)){2})2f\s+(\g'd'{2})2f\s+(\g'd'{4})
问题是 C# 抱怨:
Unrecognized escape sequence \g.
C# 正则表达式中“\g”的等效语法是什么?或者我打算使用的正则表达式有更好的替代方案吗?
正则表达式101的链接:https://regex101.com/r/CP4ZS0/1
【问题讨论】:
-
.net 正则表达式不支持递归。但在这种情况下,您可以简单地推出完整的模式,用递归模式替换递归。
-
只需重复子模式。 .NET 正则表达式不支持
\g'n'递归构造。 -
@SebastianProske 你想发布答案吗?
-
@SebastianProske,Wiktor Stribiżew - 非常感谢,我只需要用它自己的模式替换命名组。它现在可以工作了。
-
@slimjourney 您可以动态构建模式。
var p = @"(?:3[0-9]\s+)";,然后是var rx=$@"{p}{{2}}2f\s+{p}{{2}}2f\s+{p}{{4}}";。也就是说,如果您需要使代码更短。不过,这和塞巴斯蒂安的建议是一样的。