0

我想从 sql 中获取表名(例如:)select name from user where id>5

我尝试使用正则表达式,我的模式是from\s+(.*)(\s*$|where)

当sql不包含'where'时,没关系。但如果 sql 包含 'where',我会得到 'user where id>5' 作为答案。

因为 sql 可能没有 'where',所以我使用$,但(.*)(\s*$)几乎可以匹配所有内容,我尝试使用 this from\s+(.*)(\s*where|$),我得到相同的错误答案。

我想知道我使用时是否有匹配的顺序|?我应该怎么做?

4

1 回答 1

1

你的.*first 吃掉所有东西,包括 where 子句,然后它匹配$. 原因是贪心*

您应该将它附加到惰性?

尝试FROM\s+(.*?)(\s+WHERE|$)

于 2012-11-16T08:12:31.997 回答