質問
私はこのような比較に一致する正規表現を作成しようとしています:
= 445
> 5
>= 22
< 3
<= 42
<> 10
私はこれが働くだろうと思ったが、それはしていません。
[=|>|<|>=|<|<=|<>]\s\d+
それはその「>」または「<」に先行「=」が非常に重要です。これらの演算子は、有効ではありません。
=<
=>
>>
<<
==
比較演算子は、有効なSQLに必要なので、私はいくつかの動的SQLを作成するために、これを使用しています。
任意の提案ですか?
正しい解決策はありません
他のヒント
(=|>|<|>=|<|<=|<>)\s\d+
か何かのように:
(本当にあなたがやりたいことはありません、それは=、<>の全て2characterの組み合わせを一致しますが、明瞭のために)[=><]{1,2}\s\d+
- >あなたは[]括弧を使用する場合、それは意味し、文字の内側の1つが行わ取る必要があります(複数|未定義の動作につながる可能性が定義された、または行動が、私は認識していないよ)
- >あなたはおそらく、単純な中括弧を(使用していました)、| 'OR' の意味を持っています。
私はEMFIによって与えられた正規表現が良い十分であると言うでしょう。いくつかの変更で、それはこの
のような式を取ることができます"currentDate>=2012/11/07&¤tDate<=2012/11/08";
あるいは、この
"currentDate==2012/11/07";
この修正された正規表現と
(<[=>]?|==|>=?|\&\&|\|\|)
そして「有効」としてそれを与えます。おそらく非常にシンプルですが、私の場合は、少なくとも、十分な
編集: 正規表現は、比較演算子を取るため(<、>、> =、に変更された<と同様に(&&、||)=、==)とブール演算子C-ような言語
は、構文[…]
は、文字クラスを示しています。代わりにグループ化するための使用(…)
ます:
(=|>|<|>=|<|<=|<>)\s\d+
そして、ここで、よりコンパクトな一つです。
(=|[<>]=?|<>)\s\d+
それともます:
(=|<[>=]?|>=?)\s\d+
この1は、あなたが探しているものを行います。
(<[=>]?|=|>=?)\s\d+
自分自身のためにこれを解決しました。それが一致して、<、>、<=、> =、!=、=、<>とない=>または= <残念ながらそれはまだ>>一致します。私はちょうど私のアプリケーションコードで、そのためにチェックしています。
([!<>])?([=>])?(?!<)
私は今イム万歳古い記事だけど、私は正規表現魔女は大文字と小文字が区別され作られた、我々は必要なものだけことがわかりました、と私はそれのヘルプ誰かを願っています。
のためのその作品!=、<=、> =、==、<、>と文字列のみの初めにそれを見つけるます。
^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)?