我想寫的正則表達式應該只得到了以下的模式:正則表達式
WordWihoutNumbers.WordWihoutNumbers='value'
和圖案與多個子表達式,如:
WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2' AND WordWihoutNumbers.WordWihoutNumbers='value3'
WordWihoutNumbers
必須至少有兩個字符且沒有數字。
例如,這些都是有效的字符串:
- Hardware.Make ='聯想
- Hardware.Make = '聯想' OR User.Sitecode = 'PRC'
和那些不是:
- Hardware.Make ='Lenovo'OR =>因爲OR運算符後面什麼也沒有
- Hardware.Make ='Lenovo =>'缺少
- Hardware Make ='Lenovo =>。缺少
- Hardware.Make'Lenovo」 => =缺少
我以前使用RegexBuddy寫以下正則表達式串:當我它使用使用RegexBuddy它工作得很好測試
(?i)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+'(\s)*((\s)*(AND|OR)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+')*
當我使用但它在我的C#代碼中,我總是得到'假'的結果。
我在做什麼錯了?
這是我在我的C#代碼所做的:
string expression = "Hardware.Make=’Lenovo’ OR User.Sitecode=’PRC’";
Regex expressionFormat = new Regex(@"(?i)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+'(\s)*((\s)*(AND|OR)(\s)*[a-z][a-z]+(.[a-z][a-z]+)(\s)*=(\s)*'[a-z0-9]+')*");
bool result = expressionFormat.IsMatch(expression);
和結果參數始終是false
UPDATE:感謝@nhahtdh他的評論,我在使用了’
我輸入檢查代替'
我需要在這個表達式中加上括號驗證,例如: ((WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2') AND WordWihoutNumbers.WordWihoutNumbers='value3'
)有效,但是
)WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2') AND WordWihoutNumbers.WordWihoutNumbers='value3'
)無效。
是否可以使用Regex來實現?你有好主意嗎?
你能展示你如何在C#代碼中包含正則表達式嗎? – nhahtdh
是的現在加入 – Ofir
也許你沒有加倍(逃避)\?像\\ s? –