博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式中对于"不匹配"特定pattern的实现
阅读量:7236 次
发布时间:2019-06-29

本文共 1213 字,大约阅读时间需要 4 分钟。

一直觉得自己对于正则表达式非常熟悉,今天被同事问住了。。。

要求实现一个“不匹配”某个字符串的正则.

以住对于这种问题的处理思路是写出匹配特定字符串的正则表达式,进行匹配后对结果进行检验。由于业务限制,这种思路行不通。

 

求助baidu后,得到结果(?!pattern)可以实现需求

负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

 

以下为演示代码

package com.company.project;import java.util.regex.Matcher;import java.util.regex.Pattern;public class test {    static void atest(){            Pattern p = null; //正则表达式                  Matcher m = null; //操作的字符串              boolean b = false;                        //匹配出不含10.0.3.111的字串             p = Pattern.compile("(?!10.0.3.111).*$");                m = p.matcher("10.0.3.111fadf");                b = m.matches();               System.out.println("匹配结果:"+b);                       m = p.matcher("10.0.3.121fa");                b = m.matches();               System.out.println("匹配结果:"+b);                    m = p.matcher("10.2.3.121ax");                b = m.matches();               System.out.println("匹配结果:"+b);                }    public static void main(String argus[]){        atest();        }}

 

结果

匹配结果:false匹配结果:true匹配结果:true

 

 

转载地址:http://ijgfm.baihongyu.com/

你可能感兴趣的文章
mvc 截取上传图片做头像,自动生成不同小尺寸缩略图
查看>>
AutoCAD 命令统计魔幻球的实现过程--(1)
查看>>
判断是大端字节序还是小端字节序
查看>>
ZOJ 1985 Largest Rectangle in a Histogram(动态规划+路径压缩)
查看>>
javascript中return false;preventDefault();stopPragation()的区别
查看>>
硬件原理图和实物对比理解_EM310模块电路
查看>>
【原】unity3d android工程签名
查看>>
BW中自定义数据源的Delta机制 (重点function抽取)
查看>>
如何解决Silverlight InitializeError #2103 - Invalid or malformed application: Check manifest
查看>>
Java程序优化的一些最佳实践(转)
查看>>
原因资料POST git-receive-pack (chunked)
查看>>
EZGUI下的动态图片的处理
查看>>
源代码分析Fragmentd的BackStack管理过程
查看>>
escape(s, t)函数的实现
查看>>
WIN内核线程池函数
查看>>
机器学习常见算法个人总结(面试用)
查看>>
T4 好用的Vs扩展
查看>>
Swift3.0 split函数切割字符串
查看>>
字典树
查看>>
单例模式的七种写法
查看>>