2009-09-24 75 views
4

是否有可能有一个有名称的捕获组,总是会有“BLAH”值尽管“BLAH”没有出现在匹配的字符串中?正则表达式中,我可以“硬编码”命名捕获组的值

实际上,我正在寻找类似下面的伪正则表达式不(注意用伪造源= BLAH语法):

^(?<source=BLAH>)$ 
+0

我不认为你可以用正则表达式来实现这一点。 – 2009-09-24 16:21:53

+0

@Ahmad Mageed,许多非.NET人员过滤出标签为C#的问题,此外,这个问题并不是真正的C#特定的 – zvolkov 2009-09-24 17:12:46

+0

@zvolkov:啊,好的。基于提及的组语法,我误解了C#特有的。当然,它适用于一般的正则表达式。 – 2009-09-24 17:21:37

回答

3

如果我理解正确的话,你会问你是否能有尽管“BLAH”没有出现在被匹配的字符串中,但“来源”充当命名捕获组,其始终具有“BLAH”的值。这是不可能的。

你可以做的最多的是用(?'source')设置你的正则表达式,它将被认为是一个空的捕获组,它什么都不匹配。使用GetGroupNames method,你可以看到它存在,但你不能分配任何东西给它,这使得它无用。如果“BLAH”是一个需要的文件前缀,然后在你的代码中的其他地方处理它,除非你有各种各样的前缀,在这种情况下,你可以考虑动态构建正则表达式模式来处理它们。