Java正则表达式

摘要:
Java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑和处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如HelloWorld正则表达式匹配“HelloWorld”字符串。
Java正则表达式

正则表达式定义了字符串的模式。

正则表达式可以用来搜索、编辑和处理文本。

正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

正则表达式实例

一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配“Hello World”字符串。

.(点号)也是一个正则表达式,他匹配任何一个字符如:“a“或者”1“。

Java正则表达式第1张

Java正则表达式和Perl的是最为相似的。

java.util.regex包主要包括以下三个类:

  • Pattern类:pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接收一个正则表达式作为它的第一个参数。
  • Matcher类:Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的Matcher方法来获得一个Matcher对象。
  • PatternSyntaxException类:PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

以下实例中使用了正则表达式 .*chinasouthtiger.* 用于查找字符串中是否包含了 chinasouthtiger 子串:

import java.util.regex.*;
class RegexExample{
public static void main(String []args){
String content="I am noob "+"from chinasouthtiger.com";
String pattern=".*chinasouthtiger.*";
Boolean isMathch=Pattern.matches(pattern,content);
System.out.println("字符串中是否包含了 ‘chinasouthtiger’字符子串?”+isMathch);
}
}

捕获组

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

例如,正则表达式 (dog) 创建了单一分组,组里包含"d","o",和"g"。

捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。

还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

实例

下面的例子说明如何从一个给定的字符串中找到数字串:

package pkg2020华南虎;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author yl
 */
public class RegexMatches {

    public static void main(String[] args) {
        //按指定模式在字符串查找、
        String line = "This order was placed for QT3000! OK?";
        String pattern = "(\D*)(\d+)(.*)";
        //创建patteern对象
        Pattern r = Pattern.compile(pattern);
        //现在创建matcher对象
        Matcher m = r.matcher(line);
        if (m.find()) {
            System.out.println("Found value:" + m.group(0));
            System.out.println("Found value:" + m.group(1));
            System.out.println("Found value:" + m.group(2));
            System.out.println("Found value:" + m.group(3));
        }else{
            System.out.println("NO MATCH");
        }
    }
}

正则表达式语法  

在其他语言中,\ 表示:我想要在正则表达式中插入一个普通的(字面意义)反斜杠

在Java中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

所以,,在其他语言中(如Perl),一个反斜杠 就足以具有转义的作用,而在Java正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在Java的正则表达式中,两个 \ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \d,而表示一个普通的反斜杠是 \\ 。

Java正则表达式第2张

Java正则表达式第3张

Java正则表达式第4张

根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 "" 与单个退格字符匹配,而 "\b" 与单词边界匹配。字符串字面值 "(hello)" 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 "\(hello\)"。


Matcher类的方法

索引方法

研究方法

替换方法

start和end方法

matches和lookingAt方法

replaceFirst和replaceAll方法

appendReplacement和appendTail方法

PatternSyntaxException类的方法


免责声明:文章转载自《Java正则表达式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MyEclipse 安装svn 插件步骤详情HBase 学习(二) Hbase安装与启动下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Go语言正则表达式提取网页文本

为了方便提取,我们会把正则表达式中要提取的数据使用命名方式来书写正则表达式。这个技术在Go语言中如何实现,可以看下面这篇博客: Using the Go Regexp Packagehttp://blog.kamilkisiel.net/blog/2012/07/05/using-the-go-regexp-package/ 简单期间,这里复制其中几个例子...

MySQL快速回顾:高级查询操作

8.1 排序数据 检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控制的话,不能依赖该排序顺序。 关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序...

了解grep、vim的查找 和正则表达式

grep 不支持正则表达式匹配 egrep 支持正则表达式匹配,但扩展部分不支持 vim的查找 / ? :  支持正则表达式匹配,但扩展部分不支持 常用例子: grep  xxx  123.log                           基本的grep egrep    name=123.*port=80         查找包含name=1...

Vs 正则表达式 查找替换 微软权威参考

查找:Load\(\"Sql模板名称[^\"]+ 替换:\0_操作名 说明: 将形式如下的字符串替换 Load("Sql模板名称") Load("Sql模板名") 为 Load("Sql模板名称_操作名") Load("Sql模板名") ********************************************* 查找:{Load\(\"Sq...

Day9.正则表达式、grep命令和sed命令

作业一:整理正则表达式 ^ 行首$ 行尾. 除了换行符以外的任意单个字符* 前导字符的零个或多个.* 所有字符[] 字符组内的任一字符[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)^[^] 非字符组内的字符开头的行 作业二:grep作业(正则表达式及字符处理) 目标文件/etc/passwd,使用grep命令或egrep1.显示出所有含有r...

学习正则表达式

什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子. 一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式. "Regular expression"这个词比较拗口, 我们常使用缩写的术语"regex"或"regexp". 正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的...