1

私は正規表現の専門家ではないので、この質問を捨てると思いました。正規表現は、テストをより堅牢にするのに役立つと思います(生成されたEJB QLステートメントをテストして正しく生成する)。

例えば:

select u.firstName, u.lastName from Users u where u.age > 50

次のように分割するためにどの正規表現を使用しますか?

  1. "u.firstName、u.lastName"
  2. 「ユーザーu」
  3. 「u.age>50」

キーワードの大文字と小文字に関係なく(つまり、SELECT、Select、select、...)、キーワードの前後の可能なスペースに関係なく?もちろん、さらに分割したほうがいいのですが、上記のようにパーツを分割できれば、テストを改善できます。

ポインタとヘルプを事前に感謝します。

4

2 に答える 2

1

分割する正規表現は次のようになります。

 select|from|where

lanaguageのツールを使用して、大文字と小文字を区別しないように正規表現をコンパイルできます。

//Example in java
Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
于 2009-10-27T16:18:03.170 に答える
1

最も簡単な正規表現は次のようになります。

select(.*?)from(.*?)where(.*)

言語によっては、大文字と小文字を区別しないように正規表現のフラグを設定できるはずです。その結果、必要な情報(スペースで囲まれた)を含む3つのキャプチャされたグループになります。trim()正規表現をより複雑にするよりも、言語でまたは同様の関数を使用して、不要なスペースを削除する方が簡単です。

于 2009-10-27T16:48:21.983 に答える