我想在 C# 中為可以包含任何運算子和運算元值的字串撰寫一個正則運算式。這些運算子是字串字符,例如 eq 表示相等,ct = contains & bt 表示 between ,eq 表示相等。
我將字串放入后端,如 eq=4。但是在測驗程序中,有人用垃圾值測驗了我的代碼到我的 API 并且字串是 eq:** 4。
現在我想構建一個正則運算式,以便它根據 eq:5 或 bt:8-9 等正則運算式值驗證字串。
請注意:在操作員之間排除其他操作員不應該具有像 eq:4-6 這樣的值。
我已經這樣做了@"^\b(eq | ne | gt | lt | ge | le | ct | bt)\w\b : ? (\d | - ) ? \d"
似乎我很接近,但需要一些指導才能使其正常作業。
歡迎任何幫助或建議。
uj5u.com熱心網友回復:
(eq|ne|gt|lt|ge|le|ct|bt):-?[0-9] (--?[0-9] )?
或命名組:
@"(?<operator>eq|ne|gt|lt|ge|le|ct|bt):(?<firstValue>-?[0-9] )(-(?<secondValue>-?[0-9] ))?$"
演示:https : //regex101.com/r/HWnIq9/1
uj5u.com熱心網友回復:
您可以使用
@"^(eq|[gln]e|[bclg]t)\s*:\s*\d (?:\.\d )?(?:-\d (?:\.\d )?)?\z"
請參閱正則運算式演示。詳情:
^- 字串的開始(eq|[gln]e|[bclg]t)\s*:\s*- 用零個或多個空格括起來的冒號\d (?:\.\d )?- 一個整數/浮點數(一個或多個數字,然后是一個點和一個或多個數字的可選序列)(?:-\d (?:\.\d )?)?- a-, 一個或多個數字的可選序列,然后是一個點和一個或多個數字的可選序列\z- 字串的最后。
查看.NET regex 中錨點和錨點之間$\z的區別。
編輯:
似乎只bt接受范圍,所以你需要
@"^(?:eq|[gln]e|[clg]t|(bt))\s*:\s*\d (?:\.\d )?(?(1)(?:-\d (?:\.\d )?)?)\z"
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/330740.html
上一篇:在單元測驗中讀取src檔案
