首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带括号的简单布尔表达式的正则表达式

带括号的简单布尔表达式的正则表达式
EN

Stack Overflow用户
提问于 2014-02-05 12:43:16
回答 1查看 127关注 0票数 0

我正在尝试编写只应该获得以下模式的正则表达式:

WordWihoutNumbers.WordWihoutNumbers='value'

以及具有多个子表达式的模式,如:

WordWihoutNumbers.WordWihoutNumbers='value' OR WordWihoutNumbers.WordWihoutNumbers='value2' AND WordWihoutNumbers.WordWihoutNumbers='value3'

WordWihoutNumbers必须至少有两个字符且没有数字。

例如,这些字符串是有效的:

  • 硬件制造=‘联想’
  • 硬件。Lenovo=‘联想’或用户。承包=‘中华人民共和国’

而这些并不是:

  • 硬件: there =‘Lenovo’或=>,因为在OR操作员之后什么都没有
  • 硬件制造=‘联想=>’失踪
  • 硬件制造=‘联想=>。缺少
  • 硬件制造‘联想’=> =失踪

我使用RegexBuddy编写了以下Regex字符串:

代码语言:javascript
复制
(?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#代码中所做的:

代码语言:javascript
复制
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')是有效的,但是

)是无效的。

是否可以使用Regex实现?你有什么主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-09 06:02:05

感谢@nhahtdh发现了我的问题。

问题是'是不同的代码点,这就是我的正则表达式不能工作的原因(这是输入问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21577651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档