Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
c#正则表达式重复计数不能是变量_C#_Regex - Fatal编程技术网

c#正则表达式重复计数不能是变量

c#正则表达式重复计数不能是变量,c#,regex,C#,Regex,我不知道重复次数,直到运行时才知道,最后出现了下面这样难看的代码。有没有办法使重复计数成为一个变量,或者以某种方式减少混乱?我尝试了几种方法,包括为mPattern连接一个字符串。我最终得到了嵌入的反睫毛“\”,这使得移除它们的成本越来越高 if (ExtraColumnCount == 0) mPattern = @"\w+(?:\s+(?:\w|#|-)+){3}$"; if (ExtraColumnCount == 1) mPattern = @"\w+(?:\s+(?:\w|#|-)+)

我不知道重复次数,直到运行时才知道,最后出现了下面这样难看的代码。有没有办法使重复计数成为一个变量,或者以某种方式减少混乱?我尝试了几种方法,包括为mPattern连接一个字符串。我最终得到了嵌入的反睫毛“\”,这使得移除它们的成本越来越高

if (ExtraColumnCount == 0) mPattern = @"\w+(?:\s+(?:\w|#|-)+){3}$";
if (ExtraColumnCount == 1) mPattern = @"\w+(?:\s+(?:\w|#|-)+){4}$";
if (ExtraColumnCount == 2) mPattern = @"\w+(?:\s+(?:\w|#|-)+){5}$";
if (ExtraColumnCount == 3) mPattern = @"\w+(?:\s+(?:\w|#|-)+){6}$";

mPattern
是一个字符串,因此您可以简单地执行以下操作:

mPattern = @"\w+(?:\s+(?:\w|#|-)+){"+ (ExtraColumnCount+3).ToString() +"}$";

可能会调整量词,如
$@“\w+(?:\s+[\w#-]+){{{{{ExtraColumnCount+3}}}}$”
?您可以将最后的所有列放入一个捕获集合,然后在最后加入您需要的内容
(\w+)(\s++[\w#-]+$
这里的问题是,您有两个临界点,在这里,您强制
\w
仅作为启动器([\w#-]内部),与EOS
$
对接。这些是引起危险信号的验证点。我会重新评估正则表达式的用法。这确实有效。我一开始就有类似的东西,但是在mPattern变量中,我被额外的斜杠甩了。我想应该是这样的。例如:“\\w+(?:\\s+(?:\\w| | |-)+){8}$”@user2741445,我们都会犯一些简单的错误,很高兴这对我们有所帮助