簡體   English   中英

如何使用正則表達式匹配四個數字字段或文本字符串

[英]How can I match four number fields or a text string using regex

因此,我正在連接的傳感器輸出 4 個多位整數(由空格分隔)或錯誤字符串。

理想情況下,我的正則表達式將返回上述任一場景的匹配項並拒絕任何其他輸出 - 例如,如果只有 3 個數字是 output。 然后我可以檢查以下 c# 中是否有 4 組(數字輸出)或 1 組(錯誤字符串輸出)。

我擁有的正則表達式一直匹配並在少於 4 個數字時返回空格,所以我仍然需要檢查所有內容。

我試過放入?:但格式中斷。 任何正則表達式都能應對挑戰? 提前致謝。

([0-9]+\s)([0-9]+\s)([0-9]+\s)([0-9]+)|([a-zA-Z\s_!]+) 

因此,數字示例將是11 222 33 4444Sensor is in an error state! 不正確的 output 將是222 11 3333 ,因為它只有 3 個字段

另外 - 我需要捕獲四個數字(但不是空格)或錯誤字符串。

您可以捕獲只有數字的 4 個組,並匹配組外的空白字符。

否則匹配字符 class 中列出的任何字符的 1+ 倍。 請注意, \s也可以匹配換行符,並且由於\s位於字符 class 中,因此匹配也可以僅包含空格。

要匹配整個字符串,您可以添加錨點。

^(?:([0-9]+)\s([0-9]+)\s([0-9]+)\s([0-9]+)|[a-zA-Z\s_!]+)$

»正則表達式演示

匹配錯誤字符串的另一個選項是開始匹配沒有數字的單詞字符,可選地由空格字符重復,然后再次匹配沒有數字的單詞字符。

^(?:([0-9]+)\s([0-9]+)\s([0-9]+)\s([0-9]+)|[^\W\d]+(?:\s+[^\W\d]+)*!?)$

»正則表達式演示

如果錯誤消息中可能有數字,但您不想僅匹配數字或空白字符,則可以使用否定的前瞻來排除它。

 ^(?:([0-9]+)\s([0-9]+)\s([0-9]+)\s([0-9]+)|(?![\d\s]*$).+)$

»正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM