【发布时间】:2016-05-19 11:43:28
【问题描述】:
我正在尝试在后面执行正则表达式否定查找,以发现 SQL 中存在不属于评论的关键字
例如
-- some comments create
/* some more comments create
some more create
*/
create
只有最后一个 create 关键字应该匹配,因为所有其他关键字都在 cmets 中
到目前为止我有这个
(?<!--.*?)(?<!/\*.*?)\bcreate\b
这消除了前两个“创建”词。
我需要能够通过跨越多行来消除第三个,但是我需要通过在结束注释 (*/) 标记上使用异常来匹配第四个
我查看了许多正则表达式网站,例如 http://www.rexegg.com/regex-lookarounds.html,但我无法弄清楚如何做到这一点。
【问题讨论】:
-
添加信息时请edit你的帖子
-
不确定
C#是否实现了可变长度负向后查找。 -
@Toto:是的,.NET 正则表达式支持无限宽度的后视。 Dave,您可以匹配并捕获 cmets,然后匹配
create以对其执行任何更改。见(--.*|/\*[^*]*\*+([^/*][^*]*\*+)*/)|\bcreate\b -
Wiktor 的评论解决了我的问题。感谢所有其他做出贡献的人。