我试图建立一个满足比较像这样的正则表达式:如何搭配比较运营商正则表达式
= 445
> 5
>= 22
< 3
<= 42
<> 10
我认为这会工作,但不会:
[=|>|<|>=|<|<=|<>]\s\d+
'>'或'<'在'='之前是非常重要的。这些运营商将无效:
=<
=>
>>
<<
==
我用这个来创建一些动态的SQL,所以比较运算符需要有效的SQL。
有什么建议吗?
我试图建立一个满足比较像这样的正则表达式:如何搭配比较运营商正则表达式
= 445
> 5
>= 22
< 3
<= 42
<> 10
我认为这会工作,但不会:
[=|>|<|>=|<|<=|<>]\s\d+
'>'或'<'在'='之前是非常重要的。这些运营商将无效:
=<
=>
>>
<<
==
我用这个来创建一些动态的SQL,所以比较运算符需要有效的SQL。
有什么建议吗?
(=|>|<|>=|<|<=|<>)\s\d+
或类似的东西: - >当您使用[
[=><]{1,2}\s\d+
(并没有真正做你想做的,它= <的所有2character组合>,但清晰一致) ]这意味着,应该发生一个内部字符(多个|可能导致未定义的行为,或我不知道的行为)
- >您可能想使用简单的大括号() | |具有'OR'含义。
语法[…]
表示一个字符类。使用(…)
的,而不是分组:
(=|>|<|>=|<|<=|<>)\s\d+
这里还有一个更紧凑的一个:
(=|[<>]=?|<>)\s\d+
或者:
(=|<[>=]?|>=?)\s\d+
我会说EmFi给出的正则表达式已经足够好了。有一些修改可能需要表达这样
"currentDate>=2012/11/07&¤tDate<=2012/11/08";
或本
"currentDate==2012/11/07";
通过这种改进的正则表达式
(<[=>]?|==|>=?|\&\&|\|\|)
,并给它为 “有效”。也许很简单,但在我的情况下,至少,足以
编辑: 正则表达式,是为了采取比较操作(<,>,> =,< =,= =)和布尔运算符(修改& &,| |)以类似于C语言的方式
问题是匹配而不是分裂。你能否更新答案,以便解决匹配给定比较字符串的问题? – acj 2012-11-15 03:40:25
刚刚解决了这个问题。它匹配<,>,< =,> =,!=,=,<>而不是=>或= <不幸的是它仍然匹配>>。我只是在我的应用程序代码中检查。
([!<>])?([=>])?(?!<)
我现在IM万岁老的文章,但,我已经取得了正则表达式女巫是大小写敏感的,只查找我们所需要的,我希望它帮助别人。
它的作品为!=,< =,> =,==,<,>并且只在字符串的开始处找到它。
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?
第二个正则表达式匹配=>,==和= <。 – EmFi 2010-02-26 18:38:16
您应该补充说第二个版本只是一个近似值,并且匹配><和==之类的东西。 – Frank 2010-02-26 18:39:13
请注意,第二个匹配一些东西,第一个没有。例如:== >><< >< =< => – 2010-02-26 18:39:15