作者:灰常奈-ping__ | 来源:互联网 | 2023-01-30 12:29
第一部分练习:1)我测试的通配符http:msdn.microsoft.comzh-cnlibraryafy96z92(VS.80).aspx参考了这篇MS的文档~?
1) 我测试的通配符
http://msdn.microsoft.com/zh-cn/library/afy96z92(VS.80).aspx 参考了这篇MS的文档
~?*() //成功找出所有的析构函数(共22个).
2) 我测试的正则表达式
~.*() //列出所有的行
~:i() //同上,但要慢多了; 匹配表达式 等效于 ([a-zA-Z_$][a-zA-Z0-9_$]*) 所以明显不对! 因为$代表行尾的意思.
/~:a/(/) // 没查出任何东西!!!
/~:a*/(/) // 找出全部析构函数(22个).
/~.*/(/) // 找出全部析构函数(22个).
3) 下面这个例子是网上看到的别人的:
http://www.cnblogs.com/xianyun/archive/2006/06/16/427823.html
eg. DBAssist.ToInt32(p_dtrSource["QCBATCH_SEQ_INT"])
转换成
p_dtrSource["QCBATCH_SEQ_INT"].ToString()
只需要在查找/替换中【记得选中查找选项中的使用-> 正则表达式】输入:
正则表达式: {DBAssist.ToInt32/(} {.*} {/)}
替换为: /2.ToString()
解释:括号内为标记表达式,第一个就是 /1
/2.ToString() 就是保留{.*}匹配的值,在加上.ToString()
就一个表达式完成了我 N 处函数的替换!
1) 下面是VS2005中的语法:
http://msdn.microsoft.com/zh-cn/library/2k3te2cs(VS.80).aspx 上边的链接上给出了语法说明.
下面这个是我试用时遇到的一个觉得不符合一般正则表达式的一个:
禁止匹配:
~(X) 当X出现在表达式中的此位置时禁止匹配。例如,real~(ity) 匹配“realty”和“really”中的“real”,而不匹配“reality”中的“real”。
2) 下面是正规的/通用的语法( 在linux/unix中的 vi, sed, awk, grep 等等都能见到 ):
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
可见, VisualStudio中的用法有点不守常规约定的意思.
结论: VisualStudio中还是少用、不用它的正则表达式为好(不想和gvim,awk等搞混的话) :)
用用它的通配符就算了吧.