JAVA中的正则表达式--待续
1、关于“\”,在JAVA中的正则表达式中的不同;
在其他语言中"\\"表示为:我想要在正则表达式中插入一个普通的反斜杠;
在Java中“\\”表示为:我想要插入一个正则表达式反斜杠;
eg:验证整数的正则表达式为\\d; 如果想要插入一个反斜杠则为:\\\\ ;
如果是换行符和制表符则为\n 和\t ;
2、特殊字符
Greedy 数量词 | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
Reluctant 数量词 | |
X?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{n}? | X,恰好 n 次 |
X{n,}? | X,至少 n 次 |
X{n,m}? | X,至少 n 次,但是不超过 m 次 |
Possessive 数量词 | |
X?+ | X,一次或一次也没有 |
X*+ | X,零次或多次 |
X++ | X,一次或多次 |
X{n}+ | X,恰好 n 次 |
X{n,}+ | X,至少 n 次 |
X{n,m}+ | X,至少 n 次,但是不超过 m 次 |
演示代码:
- package com.st.day20150525;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class StringTest03 {
- public static String message ="The class String includes methods for examining "
- + "individual characters of the sequence, for comparing strings, "
- + "for searching strings, for extracting substrings, and for "
- + "creating a copy of a string with all characters translated to "
- + "uppercase or to lowercase. Case mapping is based on the Unicode "
- + "Standard version specified by the Character class.";
- public static void main(String[] args) {
- /**
- * 首先介绍String自带的三个正则表达式的工具
- */
- //1、使用String中的内建的功能,进行字符的验证
- System.out.println("1、使用String中的内建的功能,进行字符的验证");
- System.out.println("1243".matches("-?\\d+"));
- System.out.println("+911".matches("-?\\d+"));
- System.out.println("+911".matches("(-|\\+)?\\d+"));
- System.out.println("----------------------------------------------");
- //2、使用String.split() 将字符串从正则表达式匹配的地方分开
- System.out.println("2、使用String.split() 将字符串从正则表达式匹配的地方分开");
- String[] str01 = message.split("of|to"); // 从of 或者 to 的地方进行分开
- for (int i = 0; i < str01.length; i++) {
- System.out.println("第"+i+": "+str01[i]);
- }
- String[] str02 = message.split("\\W"); // 从空格的地方进行分开
- for (int i = 0; i < str02.length; i++) {
- System.out.print("第"+i+": "+str02[i]+" ");
- }
- System.out.println("----------------------------------------------");
- // 3、使用String中的替代,进行正则表达是的验证
- System.out.println("3、使用String中的替代,进行正则表达是的验证");
- String str03 = message.replaceFirst("the|of|to", "你被替换了");
- System.out.println(str03);
- // 替换所有的以f开头的单词
- String str04 = message.replaceAll("f\\w+", "apple");
- System.out.println(str04);
- System.out.println("----------------------------------------------");
- /**
- * 使用Pattern、Matcher进行正则表达式验证
- * Pattern:表示编译后的正则表达式对象,可以通过Pattern.compile()来编译你的表达式获取该对象
- * 调用Pattern对象中的matcher方法,传入你要验证的字符串,获取Macher对象;
- * 使用Matcher对象中的方法判断各种不同类型的对象是否匹配成功。
- *
- * boolean matches() 字符完全匹配
- * boolean lookingAt() 判断字符串开始部分是否能够匹配(不一定是整个字符串)
- * boolean find() 多匹配,从头找到尾,找出所有匹配的字符
- * boolean find(int i) 从第i个字符进行匹配
- *
- * find()可以在输入的字符的任何位置进行定位匹配正则表达式
- * lookingAt()和matches() 只有在字符的最开始的地方匹配才能成功,
- * lookingAt()只需要字符开始的一部分匹配成功就OK了,matches()需要字符完全的匹配
- */
- Pattern pattern = Pattern.compile("\\w+");
- Matcher matcher = pattern.matcher("I am a good boy!");
- System.out.println("==========Matcher中的find=================");
- while(matcher.find()){
- System.out.println(matcher.group()); // 讲所有的单词隔开
- }
- int i = 0 ; // 从第三个字符开始
- System.out.println("============测试find(int i)================");
- while(matcher.find(i)){
- System.out.print(matcher.group()+" ");
- i++ ;
- }
- System.out.println("============测试find()、lookingAt()和matches()的不同=================");
- String str = "Today is a perfect day to start living your dream.";
- for(String reg:new String[]{"\\w+","Today.*","T\\w+"}){
- Pattern p = Pattern.compile(reg);
- Matcher m = p.matcher(str);
- while (m.find()) System.out.println("find() :"+m.group()+"==="+m.start()+"==="+m.end());
- System.out.println("---------------");
- if(m.matches()) System.out.println("matches() :"+m.start()+"====="+m.end());
- System.out.println("---------------");
- if(m.lookingAt()) System.out.println("lookingAt() :"+m.start()+"==="+m.end());
- }
- System.out.println("/////////////////////////////////////////////////////////////");
- /**
- * Pattern.compile(String reg,int flag); //flag为标记参数
- * 在这里只介绍三种常用的标记参数
- * Pattern.CASE_INSENSITIVE 忽略大小写
- * Pattern.COMMENTS 忽略空格符和用“#”开始到行末的注释内容
- * Pattern.MULTILINE 多行表示,表达式^ 和 $ 匹配每一行的字符
- */
- System.out.println("----------------Pattern标记-----------------------------");
- Pattern pa = Pattern.compile("^Java", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE) ; // 通过 “|”的标识符,组合标记的功能
- Matcher ma = pa.matcher("Java is a laguage\njava regex\nJAVA is good,I like java.");
- while (ma.find()) {
- System.out.println(ma.group());
- }
- }
- }
JAVA中的正则表达式--待续的更多相关文章
- 9.JAVA中的正则表达式
一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ? #{0,1}-?有一个-或者没有 \\ #表示一个" ...
- java中使用正则表达式匹配字符串
在Java中使用正则表达式去匹配相应的字符串: String importFileRole = "(import)\\s*[a-zA-Z0-9_<>.]+\\;";// ...
- (转)Java中使用正则表达式的一个简单例子及常用正则分享
转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...
- 【java 正则表达式】记录所有在java中使用正则表达式的情况
本篇记录在java中邂逅正则表达式的所有美丽瞬间.因为在java和js中正则表达式的语法并不一致. 1.匹配字符串中有出现[2.1开头或者&2.1或者&3.1等的] Pattern m ...
- 译:Java 中的正则表达式性能概述
原文链接:https://www.baeldung.com/java-regex-performance 作者: baeldung 译者:Darren Luo 1. 概述 在本快速教程中,我们将展示模 ...
- java 中使用正则表达式操作字符串
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFl ...
- java中的正则表达式捕获组与引用的概念
今天群里有个人问,怎样用增则表达式匹配三角形的三边,其实只是要匹配三个数字而已,如 301 402 503 开始认为很简单,我就写了一个 "(([1-9]\\d?)\\s){2}$2&q ...
- js和java中使用正则表达式校验邮箱
问题:经常在项目中要校验邮箱? 邮箱格式:首位必须为字母,必须包含一个@符号,并且@之后有个名字,之后还有个.,再有一个后缀名 例如:wyp55023@163.com 一.java中代码如下: Str ...
- java中的正则表达式And Pattern And Macher
在哪里?? java.util.regex包下有两个用于正则表达式的类, 一个是Matcher类, 另一个Pattern 简单例子 public class RegexLeaning { public ...
随机推荐
- [Redux] Extracting Container Components -- VisibleTodoList
Code to be refacted: const TodoList = ({ todos, onTodoClick }) => ( <ul> {todos.map(todo =& ...
- .NET基础拾遗(3)字符串、集合和流3
三.流和序列化 3.1 流概念及.NET中常见流 无论什么信息,文字,声音,图像,只要进入了计算机就都被转化为数字,以数字方式运算.存储.由于计算机中使用二进制运算,因此数字只有两个:0 与 1,就是 ...
- 普通用户之间的ssh无密码访问设置方法
两台CentOS6.2服务器,客户端是node1,服务器是node2,先都用root用户配置,方法如下: 第一步:在客户端Node1:生成密匙对,我用的是rsa的密钥.使用命令 "ssh-k ...
- 做量化模型Matlab、R、Python、F#和C++到底选择哪一个?
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks公司发布的主要面对科学计算.可视化以及交互式程序设计的高科技计算环境.它将数 ...
- .NET技术
1.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别.回答要点:说明详细的空间分配.(10分) 解:string str=null ...
- oracle登录错误(ORA-01033:ORACLE initialization or shutdown in progress
在网上查找出现这种错误的原因一般是因为删除数据库 安装文件下的某个文件造 成的, 但是在我们的服务器上是因为 机子重启(意外断电)了一下就造 成这样的错误,不过解决办法是一样的,下面贴上解决方案 解决 ...
- silverlight visifire控件图表制作——silverlight 后台方法页面事件
1.返回事件 (1.返回silverlight页面,2.返回web页面) private void button_ClickBack(object sender, RoutedEventArgs e) ...
- C#如何设置下拉COMMBOX为不可输入,只有下拉条目
设置下拉框的DropDownStyle属性为DropDownList
- memcached真实项目中的应用
上一篇memcached介绍及基本使用介绍了memcached的一些基本概念和一个范例.这一篇将介绍一个memcached在实际项目中的应用
- iOS学习之详解AppDelegate
AppDelegate, 类似于监听接口. 用个很简单的例子说:ios系统会控制每个程序的开始和结束.但是ios又不知道每个程序的开始需要运行成么代码,结束需要运行什么代码.这个时候,ios就制定了一 ...