java规则表达式_Java基础--正则表达式的规则

注意:正则表达式只关注格式是否正确,不关注内容是否有效。

一、字符集合, []表示一个字符。

1、[abc] :指a,b,c中的任意一个字符。

2、[^abc]:指除了a,b,c外的任意字符。

3、[a-z]:表示a到z间的任意一个字符。

4、[a-zA-Z0-9]:表示a到z,A到Z,0到9的任意一个字符。

5、[a-z&&[^bc]]:等价于[ad-z],指a到z间除了b,c字符的任意字符。

二、预定义字符集* ( . )表示任意一个字符。

1、\d : 数字字符集,相当于[0-9],

2、\w:单词字符集,相当于[a-zA-Z0-9_]。

3、\s:空白字符集,相当于[\t\n\f\r\xoB]。

4、\D:非\d

5、\W:非\w

6、\S:非\s

三、数量词

1、?表示0个或一个。

2、* 表示0个或无穷个。

3、+ 表示1个或无穷个。

4、{n}表示n个。

5、{n, }表示n个到无穷个。

6、{n, m }表示n个到m个(m>n)。

7、() 表示一个整体。比如:(\+86)就是表示+86,此时+需要转义。

8、^在[]中表示非,而放在[]外,表示以……开头。比如^[0-9]就是以数字0-9开头。

9、$表示以……结尾,比如[0-9]$就是指以数字0-9结尾。

四、java的String中正则表达式写法(转义的问题)

1、11位手机号正则表达式: "^[0-9]{11}$" ;

2、邮箱正则表达式:"^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9])+$" ;此时若使用String regex = " [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9])+ "; 由于java字符串认为 ( . ) 不需要进行转义,所以写成 ( \. )会报错,需要对 \ 进行转义, 即写成 ( \\. )

3、简单的日期表达式:"^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$"  ;  \1表示匹配第一个小括号的内容,即(\-|\/|\.)

1 public classTest {2 public static voidmain(String[] args) {3 String regexDemo1 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}\\1\\d{1,2}$";4 String str = "2019.05.22";5 System.out.println(str.matches(regexDemo1)); //返回true6

7 //regexDemo1等价于regexDemo2。 其 \1 指的即为第一个小括号(), 即 \1 指的是 (\-|\/|\.)

8 String regexDemo2 = "^\\d{4}(\\-|\\/|\\.)\\d{1,2}(\\-|\\/|\\.)\\d{1,2}$";9 System.out.println(str.matches(regexDemo2)); //返回true

10 }11 }

五、字符串的替换与分解(使用正则表达式)

1、public boolean matches(String regex);判断当前字符串对象是否与参数regex格式相匹配。

2、public String replaceAll(String regex, String replacement);将字符串中符合regex格式的子串替换成replacement,此时并未改变原始字符串。

3、public String[] split(String regex); 将字符串使用regex标记分割,并将分割后的单词存入字符串数组中。

1 public classTest {2 public static voidmain(String[] args) {3 String regex = "[0-9]+";4 String str = "hello123world123";5 System.out.println("原始字符串为: " + str);//输出hello123world123

6

7 System.out.println("替换字符串后为: " +str.replaceAll(regex, " welcome ")); //输出hello welcome world welcome

8 System.out.println("原字符串不变:" + str); //不会改变原来的字符串,输出为hello123world123

9

10 System.out.println("输出切割后的字符串: ");11 String digitWord[] = str.split(regex); //以regex格式分割

12 for(String s : digitWord) {13 System.out.println(s);14 }15 }16 }17 /*

18 测试结果为:19 原始字符串为: hello123world12320 替换字符串后为: hello welcome world welcome21 原字符串不变:hello123world12322 输出切割后的字符串:23 hello24 world25 */

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

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

相关文章

获取http请求标头_HTTP请求和标头参数的CDI拦截器–简单示例

获取http请求标头在使用Java EE开发和发展REST API的过程中,有些情况下您希望以更精细的方式(视情况)对传入的HTTP请求(特别是标头参数)进行“观察” Servlet过滤器或更具体的ContainerRequestFilters 。 我发现在某些…

java多线程区别_Java中实现多线程的两种方式之间的区别

Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:◆需要从Java.lang.Thre…

詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory

詹金斯搭建我将详细展示如何定期构建您的项目,然后如何进行发布。 它涉及许多工具的协作,我发现很难正确设置这些工具,这就是我编写此代码的原因。 目标 我将向您展示如何实现以下两种方案。 第一个是如何进行常规开发的非发行版&#xff1a…

java socket优化_Java Socket编程代码优化

1.问题:在学习Java的Socket编程,写了一些代码练习,但是又不知道是否规范,是否有优化的空间?2.代码:package com.nekolr.socket;import com.google.common.util.concurrent.ThreadFactoryBuilder;import jav…

java 函数式编程_Java函数式编程:Javaslang入门

java 函数式编程Java是一门古老的语言,并且该领域中有很多新手在他们自己的领域(JVM)上挑战Java。 但是Java 8到来并带来了一些有趣的功能。 这些有趣的功能使编写新的惊人框架(例如Spark Web框架或Javaslang)成为可能…

java 线程组作用_Java线程组(ThreadGroup)使用

JDK 对线程组类注释:A thread group represents a set of threads. In addition, a thread group can also include other thread groups. The thread groups form a tree in which every thread group except the initial thread group has a parent.A thread is a…

web.xml.jsf_JSF 2.2在30秒内创建一个自定义Hello World组件

web.xml.jsf让我们直接跳到很酷的东西上,说在JSF 2.0中,通过在Facelet标记库( *taglib.xml )中对其进行配置,使页面作者可以使用自定义组件。 此外,当将组件映射到JAR中时,需要在web.xml一个特殊…

java左上角图标太小_Eclipse在高分屏下图标过小的解决方法

自己败了一台Surface Pro 4,打算用来看PDF、练代码。安装了Eclipse并且打开之后,发现图标显示极其细小,肉眼几乎无法看清了。这是由于Eclipse对高分屏没有作适配导致的。Windows 10本身对于高分屏的支持已是相当不错,苏菲4的屏幕分…

java胜任理由_Java在几乎所有方面均能胜任本机响应

java胜任理由我与一位同事讨论了Java与JavaScript的话题,这是一个有问题的话题。 然后他提到React Native多么出色,我决定我必须研究一下,也许要为Codename One掌握一些想法…… 那里有一些不错的主意,但是它们都不是革命性的或例…

java发送文件_java 模拟http发送文件和参数

一、maven:org.apache.httpcomponentshttpmime4.5.3二、工具类:import java.io.File;import java.util.Map;import java.util.Map.Entry;import org.apache.http.*;import org.apache.http.client.HttpClient;import org.apache.http.client.config.Requ…

设置Elasticsearch N-Gram字分析器的过程

说n-gram是一个大话题,这是轻描淡写的。 进行快速搜索,您会发现自己盯着语言学和语言模型,数据挖掘或特定蛋白质的分解对首次亮相文化的衰落所隐含的信息量。 好吧,我在跟那最后一个开玩笑。 但是,如果您是开发人员&a…

java字节码反编译_javap 反编译 java 字节码文件

概述:javap是 Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码,从而对代码内部的执行逻辑进行分析。语法:把java文件编译为class文件:javac Test.java (Test.java为java文件名) 生成对…

javaone_JavaOne演讲者选择了您不容错过的10个会话

javaone确保会议安排中包含这些JavaOne会话 JavaOne 2015从这个星期日开始,数百个会话同时进行,因此很难筛选所有会话并选择要参加的会话。 这就是为什么我们邀请5位最喜欢的JavaOne发言人让我们了解他们的会议,并选择他们最期待的会议。 好…

java servlet文件下载_Java之Servlet文件下载20190228

jsp页面:pageEncoding"utf-8"%>Insert title here下载index.jsp下载1.jpg下载test.jspServlet:packageorg.jimmy.testwebproject2019012602.servlet.download;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjavax.se…

activiti 多租户_Activiti中具有独立数据库架构的多租户

activiti 多租户我们过去听到的一项功能请求是以多租户方式运行Activiti引擎,使租户的数据与其他数据隔离。 当然,在某些云/ SaaS环境中,这是必须的。 几个月前,波恩大学的学生拉斐尔吉伦(Raphael Gielen)…

jigsaw kaggle_使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE

jigsaw kaggle几周前,我写了关于在Java 9上运行Eclipse Neon的文章 (尽管,我在帖子标题中错误地且令人尴尬地留下了“火星”)。 值得注意的是,我列出的步骤也适用于带有Project Jigsaw (Java模块化&#xf…

win7 activemq_带有骆驼,ActiveMQ,Elasticsearch的关键HL7用例

win7 activemqML7上的HL7是可以说HL7协议格式的系统的一种非常常见的传输机制。 JBoss Fuse是一个非常强大的微服务样式集成平台,在为关键医疗保健提供者构建灵活,有弹性,高可用性的集成方案方面拥有良好的经验。 此外,在JCAPS上替…

jboss4 迁移_应用程序服务器迁移:从JBoss EE5到Wildfly EE7

jboss4 迁移几周前,我发布了一个有关从Java EE 5迁移到7的博客 。这主要是关于如何使用新的Java EE 7改进Java EE 5代码。 现在,在这篇文章中,我将对应用程序服务器端的迁移路径进行一些研究。 如果您使用的是Java EE 5,则很有可…

java xmlrpc2.0 实现_简单的java xmlrpc

简单的 XMLRPCjava---XmlRpcClientpackage com.company;import org.apache.xmlrpc.XmlRpcClient;import org.apache.xmlrpc.XmlRpcException;import java.net.MalformedURLException;import java.util.Hashtable;import java.util.Vector;public class…

操作方法:带有Thymeleaf和Spring Boot的Java 8日期和时间

如果您碰巧使用Spring Boot和Thymeleaf,并且需要在视图中格式化Java 8 Date&Time对象,则可以使用thymeleaf-extras-java8time –用于Java 8 Date&Time API的Thymeleaf模块。 向现有的基于Maven或Gradle的Spring Boot项目中添加th…