![799f48ebec4c0369f0ae4f4cdc872a78.png](https://i-blog.csdnimg.cn/blog_migrate/33babbcbcaefa1f3b2f9f6dea6808bee.jpeg)
基本的规则
[exp] 匹配中括号里的内容
abc21cde abc[123] 匹配结果 abc2
(exp)捕获分组
abc21cde ab(c[2]) 匹配结果 abc2 会捕获到c2 这个结果
![d0641940791cd2763e373cb07cdd02d0.png](https://i-blog.csdnimg.cn/blog_migrate/708a20a8f9e03d4edceb452436c5daae.jpeg)
abc21cde ab(?c[2]) 匹配结果 abc2 也会捕获c2这个结果 ,分组名称:myName
![b8756c35e3d6811664c4d5a47e2728cf.png](https://i-blog.csdnimg.cn/blog_migrate/0ae19b8087c5d56c906a6be08510af5b.jpeg)
(?:exp)非捕获分组
abc21cde ab(?:c[2]) 匹配结果:abc2 但是不再捕获c2这个结果
![e5ea5fcbd859b619c762a83170d341b6.png](https://i-blog.csdnimg.cn/blog_migrate/9ef33a4810ce03007d1f0ce665893163.jpeg)
![0f30073f7e09d0538247666cbbfbf88f.png](https://i-blog.csdnimg.cn/blog_migrate/2e998818c17a5b8095f24012e36eb6fc.jpeg)
环视功能
环视不会占用字符,也就是说,环视它就是看一下是不是,但并不会匹配它,也就不会占用这个字符
(?=exp)肯定顺序环视,肯定前瞻
abc21cde abc(?=21) 匹配结果 abc
![10dd026fcd8105de2a5492bdfbf38bfd.png](https://i-blog.csdnimg.cn/blog_migrate/6006ab906e42b2e938167b8dd63e77c4.jpeg)
当指针指到c时,向前匹配是否有21即匹配abc右侧是21的字符串
![2db719fa0b9e120da5823393320844c1.png](https://i-blog.csdnimg.cn/blog_migrate/67e3d0384fdeec3c0809a7538af07c48.jpeg)
(?!=exp)否定顺序环视,否定前瞻
abc21cde ab(?!=ab) 匹配结果 ab
![e4f4667c2b3d348bd184c223ccb2c8d6.png](https://i-blog.csdnimg.cn/blog_migrate/470f06446ac09cc48e15d34003e3144b.jpeg)
当指针指到b时,向前匹配不是ab的字符串即匹配ab右侧不是ab的字符串
![bb8f8179d9d8741ea4a05ea25d7647a5.png](https://i-blog.csdnimg.cn/blog_migrate/365b5c783f43a1f68eb11568a08812c0.jpeg)
(?<=exp)肯定逆序环视,肯定后顾
abc21cde (?<=abc)21 匹配结果 21当指针指到2时,向后匹配是abc的字符串即匹配21左侧是abc的字符串
![154af05c20501364e00f2e14a97b83f4.png](https://i-blog.csdnimg.cn/blog_migrate/9bd6646e81b5e9c6cf88c2c7c9db440c.jpeg)
(?!
abc21cde (?!
![34dfaa8550606e591c2c1b61b66bc0d1.png](https://i-blog.csdnimg.cn/blog_migrate/1189b6aedaf13bfae8ac753495f95c72.jpeg)
实际操作
删除指定位置的空格
组 成: 张 三 李 四 万二麻子这 短 话。
需要删除*位置的空格
组*成: 张*三 李*四 万二麻子这*短*话。表达式(?<=[w一-龥]) +(?=([w一-龥:])) + 匹配半角空格(?<=[w一-龥]) 空格左侧是字符(?=([w一-龥:])) 空格右侧是字符冒号
![2493150a01b8e36c1a5711a92f1c4b5f.png](https://i-blog.csdnimg.cn/blog_migrate/b8996907eb8764c8bb2a8dbee37e6c1c.jpeg)
工具中使用表达式快速替换
比如我粘贴了一些文字 sql 查询时使用 and field in ('综合政务','财政、金融、审计' .....)利用工具中的正则匹配替换功能快速加上双引号综合政务财政、金融、审计农业、林业、水利工业、交通商贸、海关、旅游城乡建设、环境保护科技、教育文化、广电、新闻出版卫生、体育…………
左侧引号
(?=[一-龥])空格后面是汉字的替换成'
![40dee9817dff56fc395d5f170d68f553.png](https://i-blog.csdnimg.cn/blog_migrate/f2fcc6423b06bfb996de303e78645eb0.jpeg)
右侧引号逗号
(?<=[一-龥])$以汉字结尾的行 替换成',
![29a7d759c25b882bf99c5d1e669dbfde.png](https://i-blog.csdnimg.cn/blog_migrate/09a631ae27a252953e4fd9a0ea371b9d.jpeg)