java 中的正则表达式_Java中的正则表达式–软介绍

java 中的正则表达式

正则表达式是一种可以应用于文本(Java中的String)的模式。 Java提供了java.util.regex包,用于与正则表达式进行模式匹配。 Java正则表达式与Perl编程语言非常相似,并且非常易于学习。

正则表达式匹配文本(或文本的一部分),或者不匹配。
*如果正则表达式匹配文本的一部分,那么我们可以找出它是哪一部分。
**如果正则表达式复杂,那么我们可以轻松地找出正则表达式的哪一部分与文本的哪一部分匹配。

第一个例子

正则表达式“ [az] + ”与文本中的所有小写字母匹配。
[az]表示从az的任何字符,包括+,表示“一个或多个”。

假设我们提供了一个字符串“代码2学习Java教程”。

在Java中如何做

首先,您必须编译模式:
导入java.util.regex。*;
模式p = Pattern.compile(“ [az] +”);

接下来,您必须通过向模式发送消息来为文本创建匹配器
Matcher m = p.matcher(“代码2学习Java教程”);

注意 :

Pattern和Matcher都没有公共构造函数,我们通过使用Pattern类中的方法来创建它。

模式类 :模式对象是正则表达式的编译表示。 Pattern类不提供公共构造函数。 要创建模式,必须首先调用其公共静态编译方法之一,然后再返回Pattern对象。 这些方法接受正则表达式作为第一个参数。

Matcher类 :Matcher对象是解释模式并针对输入字符串执行匹配操作的引擎。 与Pattern类一样,Matcher没有定义公共构造函数。 您可以通过在Pattern对象上调用matcher方法来获得Matcher对象。

完成上述步骤后,现在有了匹配器m ,我们可以检查是否找到了匹配项,如果匹配,则从哪个索引位置开始,等等。

如果模式与整个字符串匹配,则m.matches()返回true,否则返回false。
如果模式在字符串开头匹配,则m.lookingAt()返回true,否则返回false
如果pattern与文本的任何部分匹配,则m.find()返回true

寻找匹配的东西

匹配成功后, m.start()将返回匹配的第一个字符的索引, m.end()将返回匹配的最后一个字符的索引,再加上一个。

如果未尝试匹配,或者匹配失败,则m.start()m.end()将抛出IllegalStateException
–这是一个RuntimeException,因此您不必捕获它

m.end()返回匹配的最后一个字符的索引似乎很奇怪,但这正是大多数String方法所需要的
–例如,“ 现在是时间.substring(m.start()m.end()
将返回完全匹配的子字符串。

Java程序:

import java.util.regex.*;public class RegexTest {public static void main(String args[]) {String pattern = "[a-z]+";String text = "code 2 learn java tutorial";Pattern p = Pattern.compile(pattern);Matcher m = p.matcher(text);while (m.find()) {System.out.print(text.substring(m.start(), m.end()) + "*");}}
}

输出 :代码*学习* java *教程*。

附加方法

如果m是一个匹配器,则

m.replaceFirst( replacement 返回一个新的String,其中与模式匹配的第一个子字符串已被替换
m.replaceAll(replace 返回一个新的String,其中与模式匹配的每个子字符串均已替换为replace
m.find( startIndex 从指定的索引开始查找下一个模式匹配 – m.reset()重置此匹配器 – m.reset( newText 重置此匹配器并为其提供新文本以进行检查(可以是String,StringBuffer或CharBuffer)

正则表达式语法

下表列出了Java中可用的所有正则表达式元字符语法:

子表达 火柴
^ 匹配行首。
$ 匹配行尾。
匹配除换行符以外的任何单个字符。 使用m选项还可以使其与换行符匹配。
[…] 匹配括号中的任何单个字符。
[^…] 匹配任何不在方括号中的单个字符
\一个 整个字符串的开头
\ z 整个字符串的结尾
\ Z 整个字符串的结尾,但允许的最后一行终止符除外。
回覆* 匹配0个或多个出现的前一个表达式。
重新+ 匹配1个或多个前一个
回覆? 匹配0或1个出现的前一个表达式。
重新{n} 精确匹配前一个表达式的n次出现。
re {n,} 匹配n个或多个出现的前一个表达式。
re {n,m} 至少匹配n个,最多匹配m个先前的表达式。
a | b 匹配a或b。
(回覆) 对正则表达式进行分组并记住匹配的文本。
(?: 回覆) 对正则表达式进行分组,而无需记住匹配的文本。
(?>重新) 匹配独立模式而无需回溯。
\ w 匹配单词字符。
\ W 匹配非单词字符。
\ s 匹配空格。 等效于[\ t \ n \ r \ f]。
\ S 匹配非空格。
\ d 匹配数字。 相当于[0-9]。
\ D 匹配非数字。
\一个 匹配字符串的开头。
\ Z 匹配字符串的结尾。 如果存在换行符,则匹配换行符。
\ z 匹配字符串的结尾。
\G 比赛结束点。
\ n 向后引用捕获组号“ n”
\ b 放在方括号外时匹配单词边界。 放在方括号内时,匹配退格键(0x08)。
\ B 匹配非单词边界。
\ n,\ t等 匹配换行符,回车符,制表符等。
\ Q 转义(引号)所有字符,直到\ E
\ E 结束语以\ Q开头

参考:来自JCG合作伙伴的 Java正则表达式   代码2学习博客中的Farhan Khwaja。


翻译自: https://www.javacodegeeks.com/2012/02/regular-expressions-in-java-soft.html

java 中的正则表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5移动端触摸事件

工作了近一个月了 因为公司是主要偏向于移动端,开始不懂移动端事件 一直用的click click在安卓端没有什么问题 但在IOS端就有问题了点击之后会延迟半秒 多亏旁边大神指点 原来 iOS上的Safari也支持click 和mouseover等传统的交互事件,只是不推荐在iOS…

用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

基于Java的教师信息管理系统的设计与实现论文职场大变样社区():下载毕业设计成品全套资料,全部50元以下毕业设计(论文)任务书第1页毕业设计(论文)题目:基于java的教师信息管理系统的设计与实现毕业设计(论文)要求及原始数据(资料)&#xff1a…

春云边车

我有一个部署到基于NetflixOSS的云的应用程序,该应用程序具有以下结构: 本质上是一种将信息持久保存到Cassandra群集的服务。 所有应用程序都已注册到Eureka –因此,在本例中,该服务以及Cassandra节点都已在Eureka中注册&#xf…

java json写入内存_如何在客户端上减少JSON.stringify使用的内存量?

使用JSON.stringify将大型javascript对象转换为字符串时,有没有办法减少客户端上的内存使用量?我正在寻找解决下面问题的东西,但是对于客户端上的javascript .当我尝试一个简单的JSON.stringify(big_object)时,它会迅速占用所有RA…

GridView的一些常用属性:

GridView的一些常用属性:android:numColumns”auto_fit” //GridView的列数设置为自动android:columnWidth”90dp " //每列的宽度,也就是Item的宽度android:stretchMode”columnWidth" //缩放与列宽大小同步android:verticalSpacing…

activemq端口好_ActiveMQ已准备好黄金时段

activemq端口好ActiveMQ项目始于2005年-在很大程度上,它一直是Apache Software Foundation的顶级项目。 ActiveMQ项目的目的一直是提供世界一流的企业消息传递解决方案,使经纪人能够提供从支持IP的智能设备一直到企业后端的高可用性的连通性。 ActiveMQ提…

js创建节点,小试牛刀

实现如下的功能 非常简单的一个小训练。 思想&#xff1a; 1.首先创建text和一个button 代码如下、 1 <body> 2 <input type"text" id"text1"/> 3 <input id"btn1" type"button" value"创建" /> 4 <u…

java 8是指什么_java中8个基本数据类型到底是指什么?是什么意思,有什么作用?我需要权威的回答,...

在java中一共有八种基本数据类型&#xff0c;他们分别是byte、short、int、long、float、double、char、boolean整型其中byte、short、int、long都是表示整数的&#xff0c;只不过他们的取值范围不一样byte的取值范围为-128~127&#xff0c;占用1个字节(-2的7次方到2的7次方-1)…

企业讯息

本文是我们名为“ Spring Integration for EAI ”的学院课程的一部分。 在本课程中&#xff0c;向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来&#xff0c;您将深入研究Spring Integration的基础知识&#xff0c;例如通道&#xff0c;转换器和适…

php生成txt文件_php 批量生成html,txt文件的实现代码

本篇文章是对使用php批量生成html,txt文件的实现代码进行了详细的分析介绍&#xff0c;需要的朋友参考下首先建立一个conn.php的文件用来链接数据库$link mysql_connect("mysql_host" , "mysql_user" , "mysql_password" )or die("Could n…

HDU 3665 Seaside

题目链接&#xff1a; http://acm.split.hdu.edu.cn/showproblem.php?pid3665 Problem DescriptionXiaoY is living in a big city, there are N towns in it and some towns near the sea. All these towns are numbered from 0 to N-1 and XiaoY lives in the town numbered…

Spring MVC 学习笔记一 HelloWorld

Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行&#xff08;使用Eclipse&#xff09;&#xff1a; 加入JAR包在web.xml中配置DispatcherServlet加入Spring MVC的配置文件编写处理请求的处理器&#xff0c;并添加对应注解编写视图下面按照国际惯例先来…

php 避免xss_PHP防止XSS注入

我们在做网站的时候&#xff0c;经常有input提交&#xff0c;通常前端对input中的内容不做判断&#xff0c;只做不为空等简单的操作。但是&#xff0c;有的input中会提交一些javascript或者html,会给网站造成一定的危害。为此&#xff0c;防止XSS注入的任务交给了后端&#xff…

为什么选择Docker?

容器并不是什么新鲜事物&#xff0c;但是实现它们总是比需要的要复杂一些。 Docker在简化容器方面取得了长足的进步&#xff0c;并从此引爆了整个世界。 让我们看看为什么。 为什么Docker成为家喻户晓的名字 Docker不是很老。 2014年5月&#xff0c;当我写了一篇煽动性博客文章…

全字符微信名 php,PHP方法处理微信昵称特殊符号过滤

我们在通过PHP获取微信昵称&#xff0c;并且存于数据库的时候&#xff0c;由于一些昵称带有特殊符号&#xff0c;所以存不进去&#xff0c;这时候我们可以通过下面的方式来处理。方法二protected function removeEmoji($clean_text) {// Match Emoticons$regexEmoticons /[\x{…

[转载]我的PMP复习备考经验谈(下篇)——一本关于PMP备考的小指南

原文地址&#xff1a;我的PMP复习备考经验谈(下篇)——一本关于PMP备考的小指南作者&#xff1a;羽少宸PMP复习备考经验谈&#xff08;下篇&#xff09;——PMP备考小指南 总结经验&#xff0c;展望未来&#xff0c;以此纪念PMP复习备考时光 继上篇&#xff0c;猛击直达四、如何…

java如何抽象一辆车,java新职篇:面向对象之抽象

面向对象编程的一个实质性的要素是抽象。人们通过抽象(abstraction)处理复杂性。例如&#xff0c;人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置&#xff0c;而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到杂货店&am…

Test on 09/04/2016

滑稽树 (huajitree.pas/c/cpp) 【问题描述】 JZYZ的湖畔边有一棵滑稽树&#xff0c;每年的冬天滑稽树上都会长出很多个滑稽果。我们用一个二维平面N,M描述每个滑稽果所能落下的位置&#xff0c;即每个滑稽果不可能落到我们所描述的二维平面之外。 滑稽大师cdc钟爱于收集滑稽…

php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案

前言:ThinkPHP MVC框架越来被开发者接受,众多的开发者选择了这个框架&#xff0c;也有很多的优秀项目使用的ThinkPHP框架。最近整理了一下ThinkPHP项目的一些安全配置。可能并不适用全部项目&#xff0c;大家可以适当的使用如下的安全配置。前置知识:web容器和各类组件的版本&a…

Apache-SimpleEmail 简单应用

比JavaMail使用方法要直接&#xff0c;jar包只需要在JavaMail的基础上添加commons-email-1.4.jar即可。 代码&#xff1a; // QQ邮箱发送邮件 SimpleEmail simpleEmail new SimpleEmail(); simpleEmail.setHostName("smtp.qq.com"); simpleEmail.setAuthentication(…