Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,如何保持如果条件为false则整个正则表达式不匹配的条件 到特定文本 例如,如果\s{1,37}为false,则不匹配任何内容 编辑:-1 在下列情况下我需要帮助 我想提出一个条件,如果文本中没有37个可用空间,那么正则表达式匹配必须终止 编辑-2 25 8765.00 219125.00 0.55 -219125.00 考虑一下,如果25后没有精确的37个空格,那么

如何保持如果条件为false则整个正则表达式不匹配的条件 到特定文本

例如,如果
\s{1,37}
为false,则不匹配任何内容

编辑:-1

在下列情况下我需要帮助

我想提出一个条件,如果文本中没有37个可用空间,那么正则表达式匹配必须终止

编辑-2

 25                        8765.00        219125.00                 0.55                  -219125.00

考虑一下,如果25后没有精确的37个空格,那么进一步的匹配应该很接近

我不确定是否有办法使正则表达式引擎短路。您可以使用控制动词
(*FAIL)
立即使匹配失败,或
(*LIMIT\u match=x)
将您收到的匹配数量限制为特定数量,但我认为没有办法动态告诉引擎在达到特定条件时完全停止匹配

<强>(注:根据Wikter StrubZEW在评论中,.NET的正则表达式引擎实际上不支持控制动词,因此请考虑前一段中的一般理论中的练习)< <强> >/P> 您可以改为获得前面有空格的所有数字匹配,如下所示:

var matches = Regex.Matches(input, @" +[\d.-]+");
然后循环查看前导空格的数量是否正好为37:

foreach (Match match in matches)
{
    if (match.Value.Count(c => c == ' ') != 37)
        break;

    // continue processing
}

请澄清你的问题,我不知道你在问什么。请补充更多细节。你的问题现在很模糊。能告诉我们你的正则表达式模式的其他部分吗?它只匹配数字和37个空格?您希望通过/失败的输入格式是什么?请给我们一些示例数据以供使用。谢谢,sir像Charm一样工作。第一段完全错误,因为.NET正则表达式不支持PCRE控制动词(因此这里没有必要提及它们),有一种方法可以停止在特定条件下匹配-使用lookarounds。@WiktorStribiż,我不知道这是个好消息。至于第二点,lookarounds可以停止对特定潜在匹配的匹配,而不是对整个过程的匹配(在后面的子字符串中,否则匹配的子字符串将被忽略)。@WiktorStribiżew当然,除非我“我也错了。如果是这样的话,请务必添加另一个答案,并告诉我如何操作。我无法添加答案,因为问题太模糊了。