C# 带括号的简单布尔表达式的正则表达式
我正在尝试编写只应获得以下模式的正则表达式:C# 带括号的简单布尔表达式的正则表达式,c#,regex,c#-4.0,pattern-matching,C#,Regex,C# 4.0,Pattern Matching,我正在尝试编写只应获得以下模式的正则表达式: WordWihoutNumbers.WordWihoutNumbers='value' 以及具有多个子表达式的模式,如: WordWihoutNumbers.WordWihoutNumbers='value'或WordWihoutNumbers.WordWihoutNumbers='value2'和WordWihoutNumbers.WordWihoutNumbers='value3' WordWihoutNumber必须至少包含两个字符且不包含数字
WordWihoutNumbers.WordWihoutNumbers='value'
以及具有多个子表达式的模式,如:
WordWihoutNumbers.WordWihoutNumbers='value'或WordWihoutNumbers.WordWihoutNumbers='value2'和WordWihoutNumbers.WordWihoutNumbers='value3'
WordWihoutNumber
必须至少包含两个字符且不包含数字
例如,这些是有效字符串:
- 硬件。制造联想'
- 硬件。Make='Lenovo'或User.Sitecode='PRC'
- Hardware.Make='Lenovo'或=>因为在OR运算符之后没有任何内容
- 硬件。Make='Lenovo=>'缺失
- 硬件制造商=>联想=>。失踪
- 硬件。使“联想”=>=缺失
(?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代码中使用它时,我总是得到“false”结果
我做错了什么
这就是我在C代码中所做的:
结果参数总是false
更新:感谢@nhahdh的评论,我在输入检查中使用了
'
,而不是'
我还需要在此表达式中添加括号验证,例如:
(WordWihoutNumbers.WordWihoutNumbers='value'或WordWihoutNumbers.WordWihoutNumbers='value2')和WordWihoutNumbers.WordWihoutNumbers='value3'
)有效,但
)WordWihoutNumbers.WordWihoutNumbers='value'或WordWihoutNumbers.WordWihoutNumbers='value2')和WordWihoutNumbers.WordWihoutNumbers='value3'无效
可以使用正则表达式实现吗?你有什么想法吗
感谢@nhahtdh发现了我的问题
问题是“
和”
是不同的代码点,这就是我的正则表达式无法工作的原因(这是输入问题) 你能展示一下你是如何在C代码中包含正则表达式的吗?也许你没有加倍(转义)\?像\\s?我添加了@,所以我不认为这是问题的原因。
和'
是不同的代码点。对于更新的问题,您可以使用sql解析器,
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 );