正则表达式之一:TSQL注释的查找
最近自己做了个小项目,涉及到了大量的正则表达式匹配和处理,在这里也和大家分享一下。
我相信接触过SQL Server数据库的很多朋友都知道,它是以"--"开头来进行注释的,但你觉得匹配它真的很容易吗?
让我们来看一些例子:
--获取表的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语句有一个小小问题,就是后面不能有一个单的单引号存在,否则就会匹配有问题。(因为人们的习惯对于这种分隔符默认是成双出现的,这个小问题其实也是可以忽略的)
正则表达式之一:TSQL注释的查找的更多相关文章
- JAVA正则表达式匹配,替换,查找,切割(转)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- 正则表达式过滤html注释内容
Regex.Replace("<!--(.|[\r\n])*?-->",string.Empty)
- editplus查找替换的正则表达式应用
表达式 说明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表达式左边和右边的字符. 例如, "ab|bc" ...
- VIM正则表达式查找替换
0. 一些需要注意的不同 VIM中的正则表达式和其他的有点不一样 (1) 有些符号要用\转义,比如\+表示重复一次或以上,其他的还有一些,:h pattern查看(2) 非贪婪匹配用\{-}, 如 ...
- visual Studio 中使用正则表达式来进行查找替换
1.打开visual Studio 2. 通过菜单Edit -->Find and Replace -->Replace In File ,或者使用 ctrl + Shift + H ...
- JS中search查找某些内容,正则表达式|查找分隔的任何项
JS中可以用indexOf来查找某个字符串里的某些内容的索引,也就是在字符串的位置.如果存在该字符串,会返回该字符串的索引,如果不存在会返回-1,可以通过某些内容的索引是否为-1判断是否存在该字符串. ...
- PHP正则表达式详解(二)
前言: 在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理. 本文是Jan Goyvaerts为RegexBudd ...
- editplus-查找替换的正则表达式应用
editplus查找替换的正则表达式应用 表达式 说明 \t 制表符. \n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 " ...
- Notepad++快捷键&正则表达式替换字符串&插件
Notepad++绝对是windows下进行程序编辑的神器之一,要更快速的使用以媲美VIM,必须灵活掌握它的快捷键,下面对notepad++默认的快捷键做个整理(其中有颜色的为常用招数): 1. 文件 ...
随机推荐
- ip识别运用
tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0-1 ...
- CodeForces 625A Guest From the Past
贪心水题 #include <stdio.h> #include <algorithm> #include <string.h> #include <queu ...
- LPC1788的IIC使用
#ifndef __IIC0_H_ #define __IIC0_H_ #include "common.h" #include "delay.h" //IIC ...
- 制作毛玻璃效果 分类: ios技术 2015-07-14 09:03 240人阅读 评论(0) 收藏
//添加一个图片 UIImageView *imageview = [[UIImageView alloc]init]; imageview.frame = CGRectMake(10 ...
- P4语言编程快速开始 实践一
参考:P4语言快速开始 感谢杨老师的分享! 前言及P4程序请参考原文,本文主要是对文章中的两个动手实例的实践记录. 1.通过behavioral-model运行simple_router样例 执行命令 ...
- label同时设置sizeToFit,NSTextAlignmentCenter不起作用
问题:label要多行显示,按照这样子设置,iOS9以上work,iOS8无用 self.bookNameLabel.lineBreakMode = NSLineBreakByCharWrapping ...
- [osg]osg显示中文信息
转自:http://www.cnblogs.com/feixiang-peng/articles/3152754.html 写好了在osg中实时显示中文信息的效果.中间遇到两个问题,一个是中文显示,一 ...
- 安卓组件-BroadcastReceiver
[转]http://emilyzhou.blog.51cto.com/3632647/685387 一.BroadcastReceiver的简介 用于异步接收广播Intent,广播Intent的发送是 ...
- adb报错:The connection to adb is down, and a severe&nbs
我觉得这就像是adb的大姨妈一样,不过处理起来还是很easy滴: 1.报错:BUILD FAILEDD:\workspace\ganji\build.xml:144: The following e ...
- java 位操作的总结
2014-05-07 17:14 今天工作上需要一个Byte的低5位,高3位.所以查询了资料.总结下如何实现 百度到一个资料: 介绍的很详细 基础知识: http://www.blogjava.net ...