使用正则表达式匹配tsql注释语句_MsSql

让我们来看一些例子:

复制代码 代码如下:

--获取表的count信息
select count(*) from T with(nolock)

--获取特定值的count信息
select count(*) from T with(nolock)
where v = '--value'

--获取表'T'的count信息
select count(*) from T with(nolock)

SELECT * from T --获取表T
Where P

我们先来试着给出一个简单的匹配:

复制代码 代码如下:

\-\-[^\r\n]*$

你会发现,它连第二条的SQL也匹配到了,这是不对的。看起来,我们应该排除"'"里面的, 我们再来改改:

复制代码 代码如下:

\-\-[^\'\r\n]{0,}$

还是不对,这下虽然第二条的SQL没有匹配,但连第三条的都不匹配了,看起来还是不对。

那到底怎么样才能真正匹配到所有的SQL注释呢?

首先我们来总结一下SQL注释的一些特点:

1. 以--开头

2. 注释的内容,应该不会被包含在一对''之内

3. 注释应该只会在最后,前面可以可选的出现一些语句

好了,收集到了这些之后,我们最终的SQL注释的语法也出来了:

复制代码 代码如下:

\-\-([^\'\r\n]{0,}(\'[^\'\r\n]{0,}\'){0,1}[^\'\r\n]{0,}){0,}$

这一下,四条SQL的注释全匹配到了,正则表达式太强大了吧。

这个SQL语句有一个小小问题,就是后面不能有一个单的单引号存在,否则就会匹配有问题。(因为人们的习惯对于这种分隔符默认是成双出现的,这个小问题其实也是可以忽略的)

时间: 2024-09-30 22:50:22

使用正则表达式匹配tsql注释语句_MsSql的相关文章

使用正则表达式匹配tsql注释语句

让我们来看一些例子: 复制代码 代码如下:--获取表的count信息select count(*) from T with(nolock) --获取特定值的count信息select count(*) from T with(nolock)where v = '--value' --获取表'T'的count信息select count(*) from T with(nolock) SELECT * from T --获取表TWhere P 我们先来试着给出一个简单的匹配:复制代码 代码如下:\-

java怎样用正则表达式匹配文档注释,如“/**@date 2012-1-2*/”?

问题描述 现在想做个把文件的文档注释删除的东西?不知道java怎样用正则表达式来匹配,请各位帮忙 问题补充:牟盖东 写道 解决方案 写了个例子,你可以参照下package iteyeQuestions;/* * java怎样用正则表达式匹配文档注释,如"斜杠**@date 2012-1-2*斜杠"? * 现在想做个把文件的文档注释删除的东西?不知道java怎样用正则表达式来匹配,请各位帮忙 */import java.io.BufferedReader;import java.io.B

代码-使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句

问题描述 使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句 读取一个.C文件,删除该文件中所有的注释语句.然后写入到新的.C文件里. 要求: 删除注释语句功能采用动态链接库形式 在功能实现的基础上: --单元测试要足够充分 --要通过所有的MISRA C的检查 --代码要符合代码规范. 解决方案 #include int main() { FILE *fp,*fp1; char str[99]=""; int i=0; fp=fopen("test.c"

实现正则表达式匹配任意字符解析

我们如何实现正则表达式匹配任意字符的效果呢?这个过程需要使用什么呢?具体的操作需要注意那些方面呢?那么现在我们就来揭开这神秘的一面: 实现正则表达式匹配任意字符的真相: 使用"."匹配几乎任意字符.在正则表达式中,"."是最常用的符号之一.不幸的是,它也是最容易被误用的符号之一. "."匹配一个单个的字符而不用关心被匹配的字符是什么.唯一的例外是新行符.在本教程中谈到的引擎,缺省情况下都是不匹配新行符的.因此在缺省情况下,"."

配置文件-请教各位大牛,正则表达式匹配结果的筛选问题

问题描述 请教各位大牛,正则表达式匹配结果的筛选问题 请教各位大牛,用正则表达式从配置文件里匹配IP地址"10.46.178.77",现在需要将第一个匹配结果的IP修改为108.38.105.14,注释中的不修改.该怎么做? <IPvX>4</IPvX> <localIP>localhost</localIP> <seedcount>1</seedcount> <seedport>7000</se

SQL点滴25—T-SQL面试语句,练练手

原文:SQL点滴25-T-SQL面试语句,练练手 1. 用一条SQL语句查询出每门课都大于80分的学生姓名  name   kecheng    fenshu 张三     语文     81张三     数学     75李四     语文     76李四     数学     90王五     语文     81王五     数学     100王五     英语     90 思路:这里不能直接用分数>80这样的比较条件来查询的到结果,因为要求没门成绩都大于80.我们可以反过来思考,如果

实用正则表达式匹配和替换大全_正则表达式

正则表达式非常有用,查找.匹配.处理字符串.替换和转换字符串,输入输出等.而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式.下面整理一些常用的正则表达式. 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "

运用正则表达式匹配所有表名_正则表达式

正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 复制代码 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\

运用正则表达式匹配所有表名

正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 复制代码 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\