千家信息网

JAVA中正则表达式有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关JAVA中正则表达式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。]js正则表达式基本语法(精粹):许多语言,包括Perl、PHP
千家信息网最后更新 2026年11月02日JAVA中正则表达式有哪些

这篇文章将为大家详细讲解有关JAVA中正则表达式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

]js正则表达式基本语法(精粹):

许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级"搜索-替换"功能。所以JAVA语言也不例外。正则表达式已经超出了某种语言或某个系统的局限,成为被人们广为使用的工具,我们完全可以用它来解决实际开发中碰到的一些实际的问题。

在JDK1.3及之前的JDK版本中并没有包含正则表达式的类,如果要在Java中使用正则表达式必须使用第三方提供的正则表达式库,最有名的就是Jakarta-ORO,Jakarta-ORO库以前叫做OROMatcher,是Daniel Savarese赠送给Jakarta Project的一个开源包。使用的时候首先要创建一个实现了PatternCompiler接口的实例变量以创建一个"模式编译器",Jakarta-ORO中实现了这个接口的类就是Perl5Compiler,这个类做到了与Perl5的正则表达式完全兼容。Jakarta-ORO的使用是非常简便的,而且效率非常高,支持的正则表达式语法也是非常全的,唯一的缺点就是它不是JDK中的标准包。从JDK1.4开始提供了支持正则表达式API,它们位于java.util.regex包中,由于已经有了标准API,所以本书将会用java.util.regex进行正则表达式的相关操作。

一、正则表达式基础知识

1.1 句点符号

假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以"t"字母开头,以"n"字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符--句点符号"."。这样,完整的表达式就是"t.n",它匹配"tan"、"ten"、"tin"和"ton",还匹配"t#n"、"tpn"甚至"t n",还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:

1.2 方括号符号

为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号("[]")里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式"t[aeio]n"只匹配"tan"、"Ten"、"tin"和"ton"。但"Toon"不匹配,因为在方括号之内你只能匹配单

个字符:

1.3 "或"符号

如果除了上面匹配的所有单词之外,你还想要匹配"toon",那么,你可以使用"|"操作符。"|"操作符的基本意义就是"或"运算。要匹配"toon",使用"t(a|e|i|o|oo)n"正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号"()"。圆括号还可以用来分组。

1.4 表示匹配次数的符号

下表显示了正则表达式的语法:

表 1.1 正则表达式语法

假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中,连字符("-")有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符"/"。

假设进行搜索的时候,你希望连字符号可以出现,也可以不出现--即,999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上"?"数量限定符号。

美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分"[0-9]{4}",再加上字母部分"[A-Z]{2}"。

1.5 "否"符号

"^"符号称为"否"符号。如果用在方括号内,"^"表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以"X"字母开头的单词除外。

1.6 圆括号和空白符号

"/s"符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用ORO API提取出它的值。

1.7 其它符号

为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如以下所示:

/t:制表符,等同于/u0009
/n:换行符,等同于/u000A
/d:代表一个数字,等同于[0-9]
/D:代表非数字,等同于[^0-9]
/s:代表换行符、Tab制表符等空白字符
/S:代表非空白字符
/w:字母字符,等同于[a-zA-Z_0-9]
/W:非字母字符,等同于[^/w]

例如,在前面社会安全号码的例子中,所有出现"[0-9]"的地方我们都可以使用"/d"。

以下是我整理出来的程序:供参考:

package org.luosijin.test; import java.util.regex.Matcher; import java.util.regex.Pattern; /**  * 正则表达式  * @version V.  * @author 罗嗣金  * @date --  */ public class Regex {  /**  * @param args  * @author 罗嗣金  * @date -- 下午::  */  public static void main(String[] args) {  Pattern pattern = Pattern.compile("b*g");  Matcher matcher = pattern.matcher("bbg");  System.out.println(matcher.matches());  System.out.println(pattern.matches("b*g","bbg"));  //验证邮政编码  System.out.println(pattern.matches("{}", ""));  System.out.println(pattern.matches("//d{}", ""));  //验证电话号码  System.out.println(pattern.matches("{,}//-?+", ""));  getDate("Nov ,");  charReplace();  //验证身份证:判断一个字符串是不是身份证号码,即是否是或位数字。  System.out.println(pattern.matches("^//d{}|//d{}$", ""));  getString("D:/dir/test.txt");  getChinese("welcome to china,江西奉新,welcome,你!");  validateEmail("luosijin@.com");  }  /**  * 日期提取:提取出月份来  * @param str  * @author 罗嗣金  * @date -- 下午::  */  public static void getDate(String str){  String regEx="([a-zA-Z]+)|//s+{,},//s*{}";  Pattern pattern = Pattern.compile(regEx);  Matcher matcher = pattern.matcher(str);  if(!matcher.find()){   System.out.println("日期格式错误!");   return;  }  System.out.println(matcher.group()); //分组的索引值是从开始的,所以取第一个分组的方法是m.group()而不是m.group()。  }  /**  * 字符替换:本实例为将一个字符串中所有包含一个或多个连续的"a"的地方都替换成"A"。  *  * @author 罗嗣金  * @date -- 上午::  */  public static void charReplace(){  String regex = "a+";  Pattern pattern = Pattern.compile(regex);  Matcher matcher = pattern.matcher("okaaaa LetmeAseeaaa aa booa");  String s = matcher.replaceAll("A");  System.out.println(s);  }  /**  * 字符串提取  * @param str  * @author 罗嗣金  * @date -- 上午::  */  public static void getString(String str){  String regex = ".+/(.+)$";  Pattern pattern = Pattern.compile(regex);  Matcher matcher = pattern.matcher(str);  if(!matcher.find()){   System.out.println("文件路径格式不正确!");   return;  }  System.out.println(matcher.group());  }  /**  * 中文提取  * @param str  * @author 罗嗣金  * @date -- 上午::  */  public static void getChinese(String str){  String regex = "[//uE-//uFFF]+";//[//uE-//uFFF]为汉字  Pattern pattern = Pattern.compile(regex);  Matcher matcher = pattern.matcher(str);  StringBuffer sb = new StringBuffer();  while(matcher.find()){   sb.append(matcher.group());  }  System.out.println(sb);  }  /**  * 验证Email  * @param email  * @author 罗嗣金  * @date -- 上午::  */  public static void validateEmail(String email){  String regex = "[-a-zA-Z]+@[-a-zA-Z]+//.[-a-zA-Z]+";  Pattern pattern = Pattern.compile(regex);  Matcher matcher = pattern.matcher(email);  if(matcher.matches()){   System.out.println("这是合法的Email");  }else{   System.out.println("这是非法的Email");  }  } }

关于"JAVA中正则表达式有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

表达式 正则 字符 符号 字母 号码 方括号 单词 就是 数字 格式 空白 代表 句点 圆括号 字符串 语法 连字 搜索 验证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 互联网科技工作委员会 中国互联网科技工作委员会毛军 科技和互联网公司 互联网核心科技是什么 互联网医疗科技 互联网高科技企业 互联网科技有限公司 翻译 科技类的互联网平台 济南和联互联网科技有限公司 华服互联网科技官网 想开互联网科技公司怎么样 互联网在线教育科技创业 群盈汇互联网科技有限公司 滨湖区互联网智能科技产品有哪些 互联网科技快讯热点 宁波跨境商互联网科技有限公司 上海万顺科技互联网有限公司招聘 互联网科技职业技能培训学校 北京品多多互联网科技有限公司 亿人帮互联网科技有限公司 互联网科技未来 青岛互联网科技公司 成都互联网科技公司 无线互联网科技 江苏南京365互联网科技 互联网金融中的现代科技 银川新华互联网科技学校招聘 互联网 科技节活动 微视频大赛 小牛互联网科技有限公司地址
0