正则表达式条件C#
如何保持如果条件为false则整个正则表达式不匹配的条件 到特定文本 例如,如果正则表达式条件C#,c#,regex,C#,Regex,如何保持如果条件为false则整个正则表达式不匹配的条件 到特定文本 例如,如果\s{1,37}为false,则不匹配任何内容 编辑:-1 在下列情况下我需要帮助 我想提出一个条件,如果文本中没有37个可用空间,那么正则表达式匹配必须终止 编辑-2 25 8765.00 219125.00 0.55 -219125.00 考虑一下,如果25后没有精确的37个空格,那么
\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当然,除非我“我也错了。如果是这样的话,请务必添加另一个答案,并告诉我如何操作。我无法添加答案,因为问题太模糊了。