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=>'缺失
  • 硬件制造商=>联想=>。失踪
  • 硬件。使“联想”=>=缺失
我使用RegexBuddy编写以下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]+')*
当我使用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 );