0

SQLからテーブル名を取得したい(例:) select name from user where id>5

私は正規表現を使おうとしています、私のパターンはfrom\s+(.*)(\s*$|where)

SQLに「where」が含まれていない場合は問題ありません。しかし、SQLに「where」が含まれている場合、答えとして「userwhereid>5」を取得します。

SQLには「where」がない可能性があるため、を使用$しますが、(.*)(\s*$)ほぼすべてに一致する可能性があるため、これを使用しようとするとfrom\s+(.*)(\s*where|$)、同じ間違った答えが得られます。

使うと一致する順番があるのか​​な|?どうすればいいですか?

4

1 に答える 1

1

あなたの.*最初はwhere節を含むすべてを食べ、THENは$. 原因は貪欲*

lazy ? を追加する必要があります。

試すFROM\s+(.*?)(\s+WHERE|$)

于 2012-11-16T08:12:31.997 に答える