基本的规则
[exp] 匹配中括号里的内容
abc21cde abc[123] 匹配结果 abc2
(exp)捕获分组
abc21cde ab(c[2]) 匹配结果 abc2 会捕获到c2 这个结果

abc21cde ab(?<myName>c[2]) 匹配结果 abc2 也会捕获c2这个结果 ,分组名称:myName

(?:exp)非捕获分组
abc21cde ab(?:c[2]) 匹配结果:abc2 但是不再捕获c2这个结果


环视功能
环视不会占用字符,也就是说,环视它就是看一下是不是,但并不会匹配它,也就不会占用这个字符
(?=exp)肯定顺序环视,肯定前瞻
abc21cde abc(?=21) 匹配结果 abc

当指针指到c时,向前匹配是否有21
即匹配abc右侧是21的字符串

(?!=exp)否定顺序环视,否定前瞻
abc21cde ab(?!=ab) 匹配结果 ab

当指针指到b时,向前匹配不是ab的字符串
即匹配ab右侧不是21的字符串

(?<=exp)肯定逆序环视,肯定后顾
abc21cde (?<=abc)21 匹配结果 21
当指针指到2时,向后匹配是abc的字符串
即匹配21左侧是abc的字符串

(?!<exp)否定逆序环视,否定后顾
abc21cde (?!<a)21 匹配结果 21
当指针指到2时,向后匹配不是a的字符串
即匹配21左侧不是a的字符串

实际操作
删除指定位置的空格
组 成:
张 三
李 四
万二麻子
这 短 话。
需要删除*
位置的空格
组*成:
张*三
李*四
万二麻子
这*短*话。
表达式
(?<=[\w\u4e00-\u9fa5])\u0020+(?=([\w\u4e00-\u9fa5:]))
\u0020+ 匹配半角空格
(?<=[\w\u4e00-\u9fa5]) 空格左侧是字符
(?=([\w\u4e00-\u9fa5:])) 空格右侧是字符冒号

工具中使用表达式快速替换
比如我粘贴了一些文字 sql 查询时使用 and field in ('综合政务','财政、金融、审计' .....)
利用工具中的正则匹配替换快速加上双引号
综合政务
财政、金融、审计
农业、林业、水利
工业、交通
商贸、海关、旅游
城乡建设、环境保护
科技、教育
文化、广电、新闻出版
卫生、体育
人口与计划生育、妇女儿童工作
劳动、人事、监察
公安、安全、司法
民政、扶贫、救灾
民族、宗教
对外事务
其他
左侧引号
\u0020(?=[\u4e00-\u9fa5])
空格后面是汉字的替换成'

右侧引号逗号
(?<=[\u4e00-\u9fa5])$
以汉字结尾的行 替换成',

网友评论