再用正则表达式及今日总结

今天上午一同事找我如何把长段文本中包含特定数据的行删除,我说简单正则表达式查找替换就行了,但正正做时发现自己忘了正则表达式某些特殊字符的含义,一开始还以为*代表任意字符而不是.,后来百度一下才解决问题,为此要总结一下。

1.特殊字符含义:

\t 制表符.

\n 新行.

. 匹配任意字符.

| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".

[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字.

[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非数字字符.

* 其左边的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".

+ 其左边的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".

? 其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".

^ 其右边的表达式被匹配在一行的开始. 例如 "^A" 仅仅匹配以 "A" 开头的行.

$ 其左边的表达式被匹配在一行的结尾. 例如 "e$" 仅仅匹配以 "e" 结尾的行.

() 圆括号"("和")"分别为匹配区域的起始和结束,并且用作表达式的分组标记.

\ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\".

2.常用实例

(1)正则表达式应用——替换指定内容到行尾

原始文本如下面两行,希望每次遇到"abc",则替换"abc"以及其后到行尾的内容为"abc efg"

abc aaaaa

123 abc 444

解决:

① 在替换对话框,查找内容里输入"abc.*"

② 同时勾选"正则表达式"复选框,然后点击"全部替换"按钮

其中,符号的含义如下:

"." =匹配任意字符

"*" =匹配0次或更多

(2)正则表达式应用——数字替换

希望把 asdadas123asdasdas456asdasdasd789asdasd 替换为: asdadas[123]asdasdas[456]asdasdasd[789]asdasd

在替换对话框里面,勾选"正则表达式"复选框;在查找内容里面输入"[0-9][0-9][0-9]",不含引号"替换为:"里面输入"[\0\1\2]",不含引号范围为你所操作的范围,然后选择替换即可。

实际上这也是正则表达式的使用特例,"[0-9]"表示匹配0~9之间的任何特例,同样"[a-z]"就表示匹配a~z之间的任何特例上面重复使用了"[0-9]",表示连续出现的三个数字;"\0"代表第一个"[0-9]"对应的原型,"\1"代表第二个"[0-9]"对应的原型,依此类推。

(3)正则表达式应用——删除每一行行尾的指定字符

因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现

比如

12345 1265345

2345

需要删除每行末尾的"345"

解决:

在替换对话框中,启用"正则表达式"复选框在查找内容里面输入"345$";这里"$"表示从行尾匹配

(4)正则表达式应用——删除空行

(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且 以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。

直接在"查找"中输入正则表达式"^[ \t]*\n",注意\t前有空格符。

(1)选择"从行首开始匹配","查找内容"组合框中出现字符"^",表示待查找字符串必须出现在文本中一行的行首。

(2)选择"字符在范围中",那么在"^"后会增加一对括号"[]",当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符 即符合查找条件。

(3)按一下空格键,添加空格符。空格符是空行的一个组成成分。

(4)选择"制表符",添加代表制表符的"\t"。

(5)移动光标,将当前插入点移到"]"之后,然后选择"匹配 0 次或更多",该操作会添加星号字符"*"。星号表示,其前面的括号"[]"内的空格符或制表符,在一行中出现0个或多个。

(6)选择"换行符",插入"\n",表示回车符。

 

今天在调试我们Java项目时遇到困难,登录系统后一道一个界面就报错,发现是action层报错好像是数据库中找不到某一个表,我一开始怀疑是数据库不对应,重新安装原来安装包中的数据库不行;后来想到可能是hibernate映射文件不够新,就重新生成映射文件失败,后来经同事指点才知道是因为我同时在同一个tomcat的Root目录下面同时发布了两个工程,并且我们这两个工程是基线和分支的关系,后来去掉一个果然正常了,我严重鄙视自己,一开始总以为是选中发布下面的那一个工程单击debug只发布这个工程,原来是所有在该tomcat发布下面的工程都会发布,并且同事提示对于其它暂时不用的项目最好右键关闭工程,以免自动刷新或构建是浪费资源或者影响其它工程的调试,又学到一招:关闭工程,看来要熟悉一个开发环境必须要一段时间的经常用才行。

 

今天看了刘邦和赵匡胤的一些资料,对两人的印象大为改观,要多学习他们的优点才行。

原文地址:https://www.cnblogs.com/doit8791/p/2633129.html