我正在尝试编写应该只获得以下模式的正则表达式:
WordWihoutNumbers.WordWihoutNumbers='value'
和具有多个子表达式的模式,如:
WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2' AND WordWihoutNumbers.WordWihoutNumbers='value3'
WordWihoutNumbers
必须至少有两个字符且没有数字。
例如,那些是有效的字符串:
那些不是:
我使用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]+')*
当我使用RegexBuddy进行测试时,它工作得很好但是当我在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
更新:感谢@nhahtdh的评论,我在输入检查中使用’
代替'
我需要在此表达式中添加括号验证,例如:
((WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2') AND WordWihoutNumbers.WordWihoutNumbers='value3'
)有效,但
)WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2') AND WordWihoutNumbers.WordWihoutNumbers='value3'
)无效。
是否可以使用Regex实施?你有什么想法吗?
答案 0 :(得分:0)
感谢@nhahtdh找到了我的问题。
问题是’
和'
是不同的代码点,这就是我的正则表达式不起作用的原因(这是输入问题)。