我試圖建立一個滿足比較像這樣的正則表達式:如何搭配比較運營商正則表達式
= 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