2016-12-23 54 views
-7

如何保持狀態,如果條件爲假,則整個正則表達式不匹配 特定文本正則表達式條件C#

例如,如果\s{1,37}總比沒有匹配假

編輯:-1

我想幫助在以下情況下

我想提出一個條件,如果沒有在文本中可用37空間,然後正則表達式匹配必須終止

編輯-2

25      8765.00  219125.00     0.55     -219125.00 

考慮這個如果沒有25後再往精確匹配37空間建議立即進行刪除接近

+0

請澄清你的問題,我不確定你在問什麼。 –

+1

請添加更多詳情。你的問題目前非常模糊。 – DarkKnight

+0

關注您的Regex模式的其餘部分嗎? – Abion47

回答

1

我不知道如果有短期的方式通過這種方式來控制Regex引擎。您可以使用控制動詞(*FAIL)立即失敗匹配或(*LIMIT_MATCH=x)將您收到的匹配數量限制爲特定數量,但我不相信有一種方法可以動態地指示引擎完全停止匹配以達到特定數量條件。

(注:根據Wiktor的Stribizew在評論中,.NET的正則表達式引擎實際上並不支持控制動詞,所以考慮到前一段的一般理論的運動)

你可以做什麼反而是讓用空格前面的數字的所有比賽,像這樣:

var matches = Regex.Matches(input, @" +[\d.-]+"); 

然後依次通過他們,看看是否前導空格的數量正好是37:

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

    // continue processing 
} 
+0

謝謝先生工作的魅力 –

+0

第一段完全錯誤,因爲.NET正則表達式不支持PCRE控制動詞(因此這裏沒有提及它們),並且有一種方法可以在特定條件下停止匹配 - 與lookarounds。 –

+0

@WiktorStribiżew第一點,我不知道,這是很好的信息要知道。第二點,週轉可以停止匹配特定的潛在匹配,而不是整個整個過程(如後面的子字符串,否則將被忽略)。 – Abion47