参考资料
http://www.imkevinyang.com/2009/08/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%89%BE%E5%87%BA%E4%B8%8D%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9D%A1%E7%9B%AE.html
正则基本知识
http://xixian.iteye.com/blog/721147
正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。
但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。
如下图所示:
前瞻就是在正则表达式匹配到某个字符的时候,往“尚未解析过的文本”预先看一下,看是不是符合/不符合匹配模式。
后顾,就是在正则引擎已经匹配过的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我们又称为肯定式匹配和否定式匹配
现在看它们的定义方法吧(零断言,不用管术语名称,翻译太拗口复杂了)
//前瞻
(?=exp)真正有用的部分,在这个位置之前,之前的数据需要匹配exp
(?<=exp)真正有用的部分,在这个位置之后,之后的数据需要匹配exp
//后顾
(?!exp)真正有用的部分,在这个位置之前,之前的数据不匹配exp
(?<!exp)真正有用的部分,在这个位置之后,之后的数据不匹配exp
开始写不含特定字符的正则
参考例子说明
String reg="^(?!.*(不合谐)).*$";//用到了前瞻
System.out.println("不管信不信,反正现在很不合谐".matches(reg));//false不通过
System.out.println("不管信不信,反正现在非常合谐".matches(reg));//true通过
System.out.println("不合谐在某国是普遍存在的".matches(reg));//false不通过
上面就把含有特定字符的句子完全抹杀了,实现了完全和谐社会。。。。。
上面例子是特定字符在任意位置出现都会匹配
现在某国突然良心发现皇恩浩荡开放部分言论
只想实现不以特定字符结尾的句子
我们套用上面的例子,稍微改下
String reg="^.*(?<!(不合谐))$";//用到了后顾
System.out.println("不管信不信,反正现在很不合谐".matches(reg));//false不通过
System.out.println("不管信不信,反正现在非常合谐".matches(reg));//true通过
System.out.println("不合谐在某国是普遍存在的".matches(reg));//true通过
现在第三条数据这么不和谐的数据也通过
人民可以说些话了,某国也可以辟谣了
五毛们也有工作量了,也多少增加了GDP的发展吧
-------------------------------
以上数据纯属虚构,如有雷同,纯属巧合
分享到:
相关推荐
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理...
java,正则表达式,详解,java正则表达式,PDF
Java 正则表达式判断字符串是否包含中文
Java根据正则表达式生成字符串,包括了Xeger和automaton
java正则表达式java正则表达式java正则表达式java正则表达式java正则表达式java正则表达式
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子
随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),...这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕之后,发邮件给指定用户包括一个长度为11位的初始化密码。
如果包含请将其在控制台打印出来 否则输出不包含字符串 回到第一步">JAVA正则表达式应用:任意输入一串字符串 如何输入exit退出程序;从输入的字符串中判断是否包含手机号码 正则表达式可以使用" +86| 86 1 d{...
根据java正则表达式生成一个随机的字符串,具体可以去一下网站看:https://code.google.com/p/xeger/
正则表达式判断不包涵特殊字符(除了 指定字符 以外)
java正则表达式替换字符串
其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"<title>XXXX</title>"中的文字XXXX,用正则表达式获取指定字符串内容中的指定内容,...
JAVA正则表达式JAVA正则表达式JAVA正则表达式
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效
Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
java 利用正则表达式从字符串中提取省、市、区、镇、乡等区域名称(包含少数民族地区),支持地址中无省,无市,无县情况。