`
xixian
  • 浏览: 216436 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java正则表达式找出不包含特定字符串

    博客分类:
  • java
 
阅读更多
参考资料
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的发展吧
-------------------------------
以上数据纯属虚构,如有雷同,纯属巧合


分享到:
评论
1 楼 zjut_ww 2013-04-01  
非常感谢分享。。但是我在使用过程中遇到一点小问题。就是如果用来匹配的string当中含有换行符的时候,全都会变成false.
String reg="^.*(?<!(不合谐))$";
System.out.println("合谐\n".matches(reg));
System.out.println("\n".matches(reg));

false
false

能解释下么?

相关推荐

    使用Java正则表达式分析处理日志

    3. **统计和分析**:通过正则表达式,我们可以计算特定错误发生的次数,或者找出特定模式的日志。例如,如果日志中包含错误信息的字符串,我们可以使用`Matcher.groupCount()`来统计匹配到的错误数量。 4. **异常...

    java 字符串 正则表达式 详细实例代码

    总之,理解和熟练掌握Java中的字符串操作、正则表达式以及日期时间格式化对于任何Java开发者来说都是必不可少的技能。通过实践和不断探索,你将能够编写出更高效、更优雅的代码来处理字符串相关的任务。

    java 正则表达式应用jar包 regex-smart.jar

    Matcher可以对输入字符串进行扫描,找出符合模式的所有部分。例如: ```java Matcher matcher = pattern.matcher("myPassword123"); if (matcher.matches()) { System.out.println("Valid input"); } else { ...

    java正则表达式及例子 pdf

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、搜索替换等。本篇文章将深入探讨Java中的...

    正则表达式自动生成器 V2.0.0.1 官方多语版

    例如,你可以用正则表达式验证电子邮件地址的格式,或者从一大段文本中找出所有的电话号码。 这款V2.0.0.1版本的正则表达式自动生成器提供了一些关键功能,包括: 1. **向导式界面**:对于不熟悉正则语法的用户,...

    用正则表达式提取SQL

    在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者提取符合特定模式的字符串。在本例中,其应用场景可能是分析日志、源代码,或者自动化数据处理等,目的是从...

    Java正则表达式教程

    Java正则表达式教程是为那些想要深入了解Java编程语言中正则表达式使用方法的初学者准备的。正则表达式(Regular Expression)是一种强大的文本处理工具,它用于模式匹配、搜索、替换等操作,广泛应用于字符串处理和...

    RegExp正则表达式

    3. **模式匹配**:从字符串中提取子字符串,比如从一段文本中找出所有的邮箱地址。 #### 三、正则表达式的语法格式 正则表达式的格式通常如下所示: ``` /pattern/flags ``` - `pattern`:要匹配的模式。 - `flags...

    NLP正则表达式分析程序

    正则表达式是一种模式匹配工具,它允许用一种简洁的语法来描述一类字符串。在NLP中,正则表达式常用于识别特定的文本模式,如电子邮件地址、电话号码或特定的词汇结构。例如,使用正则表达式可以轻松找出所有以"the...

    正则表达式测试器

    3. **复杂表达式的调试**:对于复杂的正则表达式,测试器能清晰展示匹配情况,有助于找出问题。 在实际应用中,正则表达式广泛应用于编程语言(如JavaScript、Python、Java等)、文本编辑器、搜索引擎、Web表单验证...

    达内JAVA的正则表达式

    提供的`RegexTester.exe`可能是一个用于测试和调试Java正则表达式的工具,它可以帮助开发者直观地看到正则表达式的匹配效果,理解正则表达式的运作方式。 总之,Java中的正则表达式是编程中不可或缺的一部分,掌握...

    正则表达式API和实例

    下面是一个简单的Java正则表达式实例,它查找并打印出输入字符串中所有的数字: ```java import java.util.regex.*; public class RegexExample { public static void main(String[] args) { String input = ...

    本电子文档讲解了正则表达式

    它能够用来检查一个字符串是否符合特定的规则,或者找出符合规则的字符串部分。正则表达式不仅用于编程语言,还广泛应用于文本编辑器、搜索引擎和各种软件中。 2. **正则表达式的基本元素** - **元字符**:元字符...

    数字字母特殊字符两两混合正则表达式

    请注意,这个正则表达式可能无法覆盖所有可能的两两混合情况,例如,它不匹配仅包含一个数字或字母的字符串。如果你需要更严格的匹配,例如确保每对相邻字符都不同,那么表达式会变得更复杂。然而,对于大多数基础...

    正则表达式经典实例

    - **Java**: Java中的`Pattern`和`Matcher`类提供了正则表达式操作,可以进行模式匹配、替换和分割字符串。 - **C#**: C#中的`Regex`类提供了丰富的正则方法,如`Match`、`Matches`和`Replace`。 3. **字符串匹配...

    正则表达式语法(30分钟入门)

    1. **搜索与替换**:在编程语言中,如JavaScript、Python、Java等,可以用正则表达式进行字符串搜索和替换操作,例如`str.replace(regexp, replacement)`。 2. **数据提取**:在网页抓取或数据分析中,正则表达式...

    正则表达式笔记

    - 使用场景包括字符串匹配(判断字符串是否符合特定规则),查找(在文本中找出符合规则的部分),以及替换(将匹配到的部分替换为其他内容)。 2. **正则表达式基础** - `matches()`方法:直接在`String`对象上...

    正则表达式

    所有包含子串 "java" 的字符串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配的,但它们都具有特殊的意义.正则表达式 /s$/ 包含两个字符. 第一个特殊字符 "s" 是按照字面意思与自身相匹配.第二个字符 ...

    最小的正则表达式分析工具

    - **查找替换**:找出所有符合正则表达式的子串,并进行替换操作。 - **分组提取**:使用括号分组,获取匹配的特定部分。 - **否定匹配**:通过使用否定预查 `(?!)` 或否定后查 `(?!...)` 来排除某些模式。 在实际...

Global site tag (gtag.js) - Google Analytics