请问匹配没有一串文本的正则表达式如何写?

canyqf 2004-03-27 06:28:08
比如要匹配一个简单Select的SQL语句的SELECT和FROM中间这段,中间不能有FROM这个文本串,为的是不要匹配到这个语句的最后一个FROM。

我现在这样写:SELECT\s+.+\s+FROM
如果输入为SELECT * FROM A WHERE A.NO IN (SELECT NO FROM B)
匹配出来是SELECT * FROM A WHERE A.NO IN (SELECT NO FROM
而期望的是SELECT * FROM

如果只是不能有字母F就可以用 [^F]+ ,但是不能有FROM这个串就不知道怎样做了。。
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
canyqf 2004-03-28
  • 打赏
  • 举报
回复
主要不是这个的问题,这样只能到第一个FROM就匹配结束,像上面那个例子如果不只是不能有FROM,还有一些其它的不能存在的文本串,这样就不行了。
不过突然想到用这个方法绕个弯应该还是可以解决问题,谢谢!!
saucer 2004-03-28
  • 打赏
  • 举报
回复
.+ is greedy, try

SELECT\s+.+?\s+FROM
canyqf 2004-03-28
  • 打赏
  • 举报
回复
这样也不行。。。
不是FROM有连续的重复,可能是间断的重复,就像上面那个例子。
showtimenow 2004-03-27
  • 打赏
  • 举报
回复
尝试
(SELECT){1}\s+.+\s+(FROM){1}

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧