`
jake_12345
  • 浏览: 8189 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

java可用正则表达式

 
阅读更多

首先看官方提供的正则表达式框架测试类:

package gnu.regexp.util;
import gnu.regexp.*;
import java.io.StringBufferInputStream;
import java.io.StringReader;

/**
 * This is a very basic testsuite application for gnu.regexp.
 *
 * @author <A HREF="mailto:wes@cacas.org">Wes Biggs</A>
 * @version 1.1.1
 */
public class Tests {
  private Tests() { }

    private static void check(RE expr, String input, String expect, int id) {
	// Test it using all possible input types
	check(expr.getMatch(input),expect,id, "String");
	check(expr.getMatch(new StringBuffer(input)),expect,id, "StringBuffer");
	check(expr.getMatch(input.toCharArray()),expect,id, "char[]");
	check(expr.getMatch(new StringReader(input)),expect,id, "Reader");
	check(expr.getMatch(new StringBufferInputStream(input)),expect,id, "InputStream");
    }
  private static void check(REMatch m, String expect, int x, String type) {
    if ((m == null) || !m.toString().equals(expect)) System.out.print("*** Failed");
    else System.out.print("Passed");
    System.out.println(" test #"+x + " (" + type + ")");
  }

  /**
   * Runs the testsuite.  No command line arguments are necessary. 
   *
   * @exception REException An error occurred compiling a regular expression.
   */
  public static void main(String[] argv) throws REException {
    RE e;

    
    e = new RE("(.*)z");
    check(e,("xxz"),"xxz",1);

    e = new RE(".*z");
    check(e,("xxz"),"xxz",2);
    
    e = new RE("(x|xy)z");
    check(e,("xz"),"xz",3);
    check(e,("xyz"),"xyz",4);

    e = new RE("(x)+z");
    check(e,("xxz"),"xxz",5);

    e = new RE("abc");
    check(e,("xyzabcdef"),"abc",6);

    e = new RE("^start.*end$");
    check(e,("start here and go to the end"),"start here and go to the end",7);

    e = new RE("(x|xy)+z");
    check(e,("xxyz"),"xxyz",8);

    e = new RE("type=([^ \t]+)[ \t]+exts=([^ \t\n\r]+)");
    check(e,("type=text/html	exts=htm,html"),"type=text/html	exts=htm,html",9);

    e = new RE("(x)\\1");
    check(e,("zxxz"),"xx", 10);

    e = new RE("(x*)(y)\\2\\1");
    check(e,("xxxyyxx"),"xxyyxx",11);

    e = new RE("[-go]+");
    check(e,("go-go"),"go-go",12);

    e = new RE("[\\w-]+");
    check(e,("go-go"),"go-go",13);

    e = new RE("^start.*?end");
    check(e,("start here and end in the middle, not the very end"),"start here and end",14);
    
    e = new RE("\\d\\s\\w\\n\\r");
    check(e,("  9\tX\n\r  "),"9\tX\n\r",15);

    e = new RE("zow",RE.REG_ICASE);
    check(e,("ZoW"),"ZoW",16);

    e = new RE("(\\d+)\\D*(\\d+)\\D*(\\d)+");
    check(e,("size--10 by 20 by 30 feet"),"10 by 20 by 30",17);

    e = new RE("(ab)(.*?)(d)");
    REMatch m = e.getMatch("abcd");
    check(m,"abcd",18, "String");
    System.out.println(((m.toString(2).equals("c")) ? "Pass" : "*** Fail") 
		       + "ed test #19");

    e = new RE("^$");
    check(e,(""),"",20);

    e = new RE("a*");
    check(e,(""),"",21);
    check(e,("a"),"a",22);
    check(e,("aa"),"aa",23);

    e = new RE("(([12]))?");
    check(e,("12"),"1",24);

    e = new RE("(.*)?b");
    check(e,("ab"),"ab",25);

    e = new RE("(.*)?-(.*)"); 
    check(e,("a-b"), "a-b", 26);

    e = new RE("(a)b");
    check(e,("aab"), "ab", 27);

    e = new RE("[M]iss");
    check(e,("one Mississippi"), "Miss", 28);

    e = new RE("\\S Miss");
    check(e,("one Mississippi"), "e Miss", 29);

    e = new RE("a*");
    check(e,("b"),"",30);
    check(e,("ab"),"a",31);
    check(e,("aab"),"aa",32);

    // Single character should match anywhere in String
    e = new RE("a");
    check(e,("a"),"a", 33);
    check(e,("ab"),"a", 34);
    check(e,("ba"),"a", 35);
    check(e,("bab"),"a", 36);
    
    e = new RE("(?!.*12)(?=.*1)(.*)");//包含1且不包含12
    check(e,("12"),"2", 37);
    System.err.println(e.isMatch("132"));
    check(e,("1"),"", 38);
    
  }
}     

 java自带正则表达式还无法完全支持正则标准,要很好控制定向搜索,正则表达式还是少不了的。^_^

http://www.baidu.com/s?wd=gnu%20regex&pn=0&tn=baiduhome_pg&ie=utf-8&usm=1

分享到:
评论

相关推荐

    适合于js和java的正则表达式

    "JS正则表达式大全.doc"可能包含JavaScript正则表达式的全面指南,包括所有可用的特性和常见应用场景;"zzbds.txt"可能是某个特定的正则表达式示例或测试数据集,用于实践和学习。 通过学习和熟练掌握这些知识点,...

    Swing 与正则表达式

    ### Swing 与正则表达式的应用 ...综上所述,Swing 和正则表达式的结合使用可以极大地提高Java GUI应用程序的用户体验和功能性。通过对用户输入的有效验证,可以减少错误的发生,提升程序的健壮性和可用性。

    java正则表达式获取大括号小括号内容并判断数字和小数亲测可用

    Java正则表达式获取大括号小括号内容并判断数字和小数亲测可用 Java正则表达式是一种强大的字符串匹配工具,可以用来提取大括号小括号中的内容,并对数字和小数进行判断。在本文中,我们将详细介绍如何使用Java正则...

    java使用正则表达式判断邮箱格式是否正确的方法

    本文将详细说明如何使用正则表达式在Java中判断邮箱格式是否正确。 首先,正则表达式是一种文本模式,包括普通字符(例如,字母和数字)和特殊字符(称为“元字符”)。它被用来进行字符串的模式匹配和替换。对于...

    精通正则表达式英文原版-第3版

    尽管如此,由于其广泛可用性、灵活性和无与伦比的力量,正则表达式经常被低估利用。 正则表达式的详细功能和优化技巧在书籍《精通正则表达式英文原版-第3版》中得到了全面的阐述。这本书不仅适用于初学者,对于已经...

    正则表达式测试工具

    8. **多语言支持**:考虑到正则表达式在各种编程语言中的差异,好的测试工具应支持多种语言的正则语法,如JavaScript、Python、Java、C#等。 9. **学习资源**:除了测试功能,一些工具还会提供正则表达式的学习资料...

    Java 正则表达式基础

    后来,在20世纪60年代末期,Ken Thompson将这些理论应用到了Unix系统中,创建了第一个实际可用的正则表达式引擎,并在Unix的`ed`编辑器中实现了它。自此以后,正则表达式逐渐成为了计算机科学中不可或缺的一部分。 ...

    java文件读写和正则表达式检索字符次位.pdf

    在Java编程中,文件读写和正则表达式是两个重要的概念,它们在处理数据和文本分析时起着关键作用。这个PDF文档似乎讲解了如何使用Java进行文件读取并结合正则表达式查找匹配字符的位置。 首先,我们来看文件读写...

    Android 正则表达式验证手机和邮箱格式是否正确

    接下来,我们可以通过Java的`Pattern`和`Matcher`类来实现正则表达式的匹配: ```java // 判断手机格式是否正确 public boolean isMobileNO(String mobiles) { Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\...

    正则表达式系统教程

    - **编程语言**:多数编程语言(如JavaScript, Python, Java, C#等)内置了正则表达式支持。 - **文本编辑器**:如Notepad++, Sublime Text, Visual Studio Code等支持正则表达式的查找和替换功能。 4. **正则...

    正则表达式

    [JAVA] javascript 正则表达式 秋雨叶 发表于 2004-12-9 14:54:13 正则表达式是一个描述字符模式的对象。 JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的...

    JAVA 正则表达式

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

    正则表达式模式修正符(/ies)

    正则表达式是一种强大的文本处理工具,广泛用于字符串搜索、替换和数据验证等领域。它通过使用一系列特殊字符来定义一个搜索模式,这些特殊字符被称为模式修正符。模式修正符可以改变正则表达式的默认行为,以满足更...

    java正则表达式验证函数

    代码如下:/** * 验证 正则表达式 * * @author zhujie regex 正则表达式 value 所属字符串 * @return boolean */ public static boolean regex(String regex, String value) { Pattern p = Pattern.compile(regex);...

    Fare:Java dk.brics.automaton和xeger的端口,主要用于生成与特定正则表达式匹配的字符串

    车费-[F] inite [A] utomata和[R] egular [E] xpressions Project Fare致力于将 / (有限状态自动机)实现从Java引入.NET。 今天,有许多其他语言可用的实现。... Xeger不支持所有有效的Java正则表达式

    regexp-trie:正则表达式

    正则表达式 通过 Trie 从令牌创建复杂的正则表达式。 概要 RegexpTrie trie = new RegexpTrie(); trie.add("foobar"); trie.add("fooxar"); trie.add("foozap"); trie.add("fooza"); System.out.println(trie...

Global site tag (gtag.js) - Google Analytics