`
kingxianstar
  • 浏览: 20196 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Pattern和Matcher

阅读更多
      一般来说,比起功能有限的String,我们更愿意构造功能强大的正则表达式对象。只需要导入java.util.regex包,然后用static Pattern.compile()方法来编译你的正则表达式即可。它会根据你的String类型的正则表达式生成一个pattern对象。接下来,把你想要检索的字符串传入Pattern对象的matcher()方法。mathcer()放法会生成一个Matcher对象,他有很多功能可用。列入,他的repalaceAll()方法能就爱那个所有匹配的部分都替换成你输入的参数。
      作为一个示例,下面的类可以用来测试正则表达式,看看它们能否匹配一个输入的字符串。第一个控制台擦书是将用来搜索匹配输入的字符串。在Unix/Linux上,命令行中的正则表达式必须是引号括起。这个程序在测试正则表达式时很有用,特别是当你想验证它们是否具有你所期待的匹配功能的时候
//:strings/TestRegulaarExpression.java
//Allows you to easily try out regular expressions.
//{Args:abcabcabcdefabs "abc+" "(abc)+" "(abc){2,}"}

import java.util.regex.*;

public class TestRegularExpression{
	public static void main(String[] args){

		if(args.length<2){
			System.out.println("Usage:\njava TestregularExpression "+"characterSequence regularExpression+");
		}
		System.out.println("Input:\""+args[0]+"\"");
		for(String arg:args){
			System.out.println("RegularExpression:\""+arg+"\"");
			Pattern p=Pattern.compile(arg);
			Matcher m=p.matcher(args[0]);
			while(m.find()){
				System.out.println("Match \""+m.group()+"\" at position "+m.start()+"-"+(m.end()-1));
			}
		}
	}
}


运行结果为:
D:\>java TestRegularExpression abcabcabcdefabc "abc"+ "(abc)+" "(abc){2,}"
Input:"abcabcabcdefabc"
RegularExpression:"abcabcabcdefabc"
Match "abcabcabcdefabc" at position 0-14
RegularExpression:"abc+"
Match "abc" at position 0-2
Match "abc" at position 3-5
Match "abc" at position 6-8
Match "abc" at position 12-14
RegularExpression:"(abc)+"
Match "abcabcabc" at position 0-8
Match "abc" at position 12-14
RegularExpression:"(abc){2,}"
Match "abcabcabc" at position 0-8

       Pattern对象表示编译后的正则表达式。测这个例子我们可以看出,我们使用已编译的Pattern上的matcher()方法,加上一个输入字符串,从额共同创造了一个matcher对象,同时,Pattern类还提供了static方法:
static boolean matches(String regex,CharSequence input)
该方法用于检查regex是否匹配整个CharSequence类型的input参数。年以后的pattern对象那个还提供了split()方法,他从匹配了regex的地方分割输入的字符串,返回分割后的子字符串String数组。
      通过调用Pattrern.mathder()方法,并传入一个字符串参数,我们得到一个Matcher对象。使用Matcher上的方法,我们能够判断各种不同类型的匹配是否成功:
boolean matches();
boolean lookingAt();
boolean find();
boolean find(int start);
其中的matches()方法用来判断整个输入字符串是否匹配正确的正则表达式,而lookingAt()则用来判断该字符串(不必是整个字符串)的开始部分是否能够匹配模式。
当我输入另外一个句子和表达式的时候 出现如下的结果,是在是想不明白:

D:\>java TestRegularExpression Java now has regular expression ^Java \Breg.*  s?
s* s+ s{4} s{1}. s{0,3}
Input:"Java"
RegularExpression:"Java"
Match "Java" at position 0-3
RegularExpression:"now"
RegularExpression:"has"
RegularExpression:"regular"
RegularExpression:"expression"
RegularExpression:"Java"
Match "Java" at position 0-3
RegularExpression:"\Breg.*"
RegularExpression:"s?"
Match "" at position 0--1
Match "" at position 1-0
Match "" at position 2-1
Match "" at position 3-2
Match "" at position 4-3
RegularExpression:"software"
RegularExpression:"Song Analysis"
RegularExpression:"System Volume Information"
RegularExpression:"s+"
RegularExpression:"s{4}"
RegularExpression:"s{1}."
RegularExpression:"s{0,3}"
Match "" at position 0--1
Match "" at position 1-0
Match "" at position 2-1
Match "" at position 3-2
Match "" at position 4-3

其中这些东西是怎么出现的啊?
RegularExpression:"software"
RegularExpression:"Song Analysis"
RegularExpression:"System Volume Information"

分享到:
评论

相关推荐

    JAVA正则表达式--Pattern和Matcher

    ### JAVA正则表达式——Pattern和Matcher详解 #### 一、引言 随着JDK 1.4的发布,Java终于内置了自己的正则表达式API,这对于Java开发者来说无疑是个福音,意味着不再需要依赖第三方库就能高效地处理文本数据。Java...

    JAVA正则表达式Pattern和Matcher

    JAVA的正则表达式主要通过Pattern和Matcher两个核心类实现。Pattern用于编译正则表达式并存储模式,而Matcher则是执行实际匹配操作的对象。通过不同的方法,如matches、split和find,我们可以对字符串进行精确或灵活...

    java Pattern Matcher的理解简记

    Java中的Pattern和Matcher是正则表达式的核心工具类,它们在处理字符串匹配和模式查找时起着关键作用。本文将深入解析这两个类的功能、用法以及相关知识点。 首先,Pattern类是Java.util.regex包下的一个类,它代表...

    Java正则表达式:Pattern类和Matcher类

    Java正则表达式:Pattern类和Matcher类

    Java正则表达式Pattern和Matcher原理详解

    正则表达式在Java中通过`Pattern`和`Matcher`类实现,这两个类都位于`java.util.regex`包中。本文将深入探讨这两个类的工作原理,并通过示例代码加深理解。 `Pattern`类是对正则表达式进行编译后得到的模式对象,它...

    JAVA正则表达式 Pattern和Matcher

    `java.util.regex`包提供了`Pattern`和`Matcher`两个核心类,它们协同工作,使得开发者能够利用正则表达式进行复杂的字符串操作。 `Pattern`类是正则表达式的核心,它将文本模式编译成一个内部表示,以便高效地执行...

    Java正则相关的Pattern和Matcher类及遇到的坑

    主要介绍了Java正则相关的Pattern和Matcher类及遇到的坑,本文给大家提到了Matcher 里面的三个方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    java正则表达式Pattern,Matcher

    Java中的正则表达式功能主要通过`java.util.regex`包来实现,该包提供了两个核心类:`Pattern`和`Matcher`。 #### 二、Pattern类 `Pattern`类代表预编译的正则表达式。它提供了静态方法`compile()`用于创建`...

    pattern matcher

    This is a pattern matcher in common lips. We implement the function match with two parameters: a pattern and a fact. It returns a list of variable-value bindings if the facts match the patterns while ...

    java_正则表达式pattern类Matcher类_(字符串匹配)

    在Java中,正则表达式的处理主要涉及到两个核心类:`Pattern`和`Matcher`。 `Pattern`类是用于编译正则表达式的,它将文本模式转化为可匹配的模式对象。在给定的例子中,`Pattern.compile("[,\\s]+")`编译了一个...

    正则表达式大全案例分析案例介绍

    使用Pattern和Matcher类来实现更复杂的匹配操作。Pattern类用于编译正则表达式,而Matcher类则用于在文本中进行匹配。 String regex = "pattern"; String input = "string"; Pattern pattern = Pattern.compile...

    详解Java正则表达式中Pattern类和Matcher类

    java.util.regex是一个用正则表达式所订制的...包括两个类Pattern和Matcher Pattern,Pattern是一个正则表达式经编译后的表现模式。Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。

    Java rexexp Pattern

    在Java中,`java.util.regex`包提供了Pattern和Matcher类来支持正则表达式的使用。下面将详细探讨这个主题。 首先,`Pattern`类是正则表达式的编译表示形式,它通过`compile`方法创建,并且可以多次复用。例如,...

    一个java正规表达式工具类

    在Java中,正则表达式(Regular Expression)是通过Pattern和Matcher类来实现的。这篇博客文章可能详细介绍了如何创建一个自定义的工具类,整合了常见的正则表达式功能,方便在项目中复用。 正则表达式是一种模式...

    java正则表

    在Java中,正则表达式主要通过java.util.regex包中的Pattern和Matcher类来实现。 **1. 正则表达式基础** 正则表达式由普通字符(例如字符'a'到'z')和特殊字符(称为元字符)组成。一些常见的元字符包括: - `.`...

    JAVA正则表达式大全

    这份文档可能深入讲解了`Pattern`和`Matcher`类的用法,如`Pattern.compile()`用于编译正则表达式,`Matcher.find()`用于查找字符串中的匹配部分,`Matcher.group()`获取匹配的子串,以及如何使用`Pattern.split()`...

    正则表达式在Java代码中的使用

    在Java中,正则表达式是通过java.util.regex包提供的类来实现的,主要包括Pattern和Matcher两个核心类。这篇博客将深入探讨正则表达式在Java代码中的应用。 首先,创建一个正则表达式需要使用Pattern类。Pattern类...

Global site tag (gtag.js) - Google Analytics