目录

0.最普通的使用

1.正则表达式有Group功能。

2.正则表达式中的贪婪模式, 非贪婪模式(*?)

3.find() 与 matches() 之间的区别

↓循环获取所有文件

↓文件内部内容读取操作

Files.lines 这个方法是java8中,新增加的方法。

Stream 构造类时,指定泛型,传递到方法中使用。


java中,正则表达式的使用

0.最普通的使用

Pattern ptn;
Matcher matStr;
String checkRE = ”^([a-zA-Z0-9])+([a-zA-Z0-9\\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\\._-])+$”ptn = Pattern.compile(checkRE);
matStr = ptn.matcher(str)if (!matStr.find()){return false;
}

2020 / 01 / 05

以上所写的只是最基本的使用。除此之外还有以下功能

1.正则表达式有Group功能。

import java.util.regex.Matcher;
import java.util.regex.Pattern;class HelloWorld {public static void main(String args[]){String checkRE = "^([a-zA-Z0-9])+@([a-zA-Z0-9\\.]+)$";Pattern ptn = Pattern.compile(checkRE);Matcher matStr = ptn.matcher("sxz@csnd.com");System.out.println(matStr.find());System.out.println(matStr.groupCount());System.out.println(matStr.group(2));}
}

--

运行结果如下

true
2
csnd.com

--

使用group定义正则之后,我们不但可以使用原有的匹配功能,

还可以指定我们想要抽出部分的内容

2.正则表达式中的贪婪模式, 非贪婪模式(*?)

import java.util.regex.Matcher;
import java.util.regex.Pattern;class HelloWorld {public static void main(String args[]){String checkRE = "^([a-zA-Z0-9])+@([a-zA-Z0-9\\.]+)$";Pattern ptn = Pattern.compile(checkRE);Matcher matStr = ptn.matcher("sxz@csnd.com");System.out.println(matStr.find());System.out.println(matStr.groupCount());System.out.println(matStr.group(2));System.out.println(matStr.group());System.out.println("--------------------------");// 正则表达式中的贪婪模式 默认开启checkRE = "<div>.*</div>";ptn = Pattern.compile(checkRE);matStr = ptn.matcher("sxzaadivaa<div>123</div><div>456</div>aaass");System.out.println(matStr.find());System.out.println(matStr.groupCount());System.out.println(matStr.group()+"   位置:["+matStr.start()+","+matStr.end()+"]");System.out.println("--------------------------");// 正则表达式中 非贪婪模式 (使用「?」)checkRE = "<div>.*?</div>*";ptn = Pattern.compile(checkRE);matStr = ptn.matcher("sxzaadivaa<div>123</div><div>456</div>aaass");System.out.println(matStr.find());System.out.println(matStr.groupCount());System.out.println(matStr.group()+"   位置:["+matStr.start()+","+matStr.end()+"]");System.out.println("--------------------------");}
}

以上代码,运行结果如下。

------------------------------------

3.find() 与 matches() 之间的区别

find()

package com.sxz.test;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TestPatternFindMatches {public static void main(String[] args) {int count = 0;String regEx = "[\\u4e00-\\u9fa5]";String str = "中文fdas ";Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(str);while (m.find()) {count = count + 1;System.out.println(m.groupCount());System.out.println(m.group());}System.out.println("共有 " + count + "个 ");}
}

---

matches()   //下面 代码 33行中使用

整理中。。。

package com.sxz.test;import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;public class TestFileOperate {private static String BATH_PATH = "C:\\test\\";private static String COLUMN_REGEX="<itemName>.*?</itemName>";public static int count;public static void main(String[] args) {getFileNameAndPrintColumnName("test001");}public static void getFileNameAndPrintColumnName(String folderName){File[] files = listFilesMatching(BATH_PATH + folderName, ".*\\.(txt|TXT)$");List<File> listFile = Arrays.asList(files);listFile.stream().forEach(readFileTxt -> process(readFileTxt));}private static File[] listFilesMatching(String path, String regex){final Pattern p = Pattern.compile(regex);return new File(path).listFiles(file -> p.matcher(file.getName()).matches());}private static void process(File readFileTxt){System.out.println("---" + readFileTxt.getName() + "------START");count = 0;final Pattern ptn = Pattern.compile(COLUMN_REGEX);try(Stream<String> lines = Files.lines(readFileTxt.toPath(),Charset.forName("UTF-8"))){lines.forEach(line->{Matcher match = ptn.matcher(line);if(match.find()){System.out.println(match.group());count = count + 1;}});} catch (IOException e) {e.printStackTrace();}System.out.println("---" + readFileTxt.getName() + " 项目数:" + count + "------END");}}

---

↓循环获取所有文件

----

----

---

 ---

↓文件内部内容读取操作

============================================

---

Files这类,是1.7中,新增加的类。

---

Files.lines 这个方法是java8中,新增加的方法。

读取一个文件中所有的行。

---

---

Stream中的forEach方法

----

Stream<T> 构造类时,指定泛型,传递到方法中使用。

---

----

java中,正则表达式的使用 (最普通使用,Group,贪婪模式)相关推荐

  1. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

    简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...

  2. java中正则表达式以及Pattern和Matcher

    正则匹配 // 反斜杠 /t 间隔 ('/u0009') /n 换行 ('/u000A') /r 回车 ('/u000D') /d 数字 等价于[0-9] /D 非数字 等价于[^0-9] /s 空白 ...

  3. Java中正则表达式的使用

    JAVA中正则表达式的使用 如果出现连续相同的要分割的字符,那么会出现空字符串 1.split方法 2.pattern类编译正则3.matches类匹配正则 public class RegexTes ...

  4. java中正则表达式的应用

    java中正则表达式的应用 判断功能 public boolean matches(String regex) 分割功能 public String[] split(String regex) 替换功 ...

  5. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \ \' \\ )...

    转自:https://www.cnblogs.com/EasonJim/p/6561666.html 若出现:Invalid escape sequence (valid ones are  \b   ...

  6. java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...

    主要用到的是这两个类 - java.util.regex.Pattern - java.util.regex.Matcher. Pattern对应正则表达式,一个Pattern与一个String对象关 ...

  7. Java中正则表达式、模式匹配与信息抽取

    引言 记得几年前在做网页爬虫后的信息抽取时,针对网页源码中隐藏的要提取的信息,比如评论.用户信息等属性信息,直接利用HtmlParser得到.如此做倒是简单,不过利用的是网页的规范的tag标记.其实j ...

  8. Java 中正则表达式的经典用法总结——捕获组

    正则表达式常用功能:匹配.切割.替换.获取(从字符串中提取指定格式字符) [String类下的正则的使用] String 类中有几个常用的方法,会涉及到正则表达式.如下: //根据正则表达式regex ...

  9. java中正则表达式并集_对Java中正则表达式的一些理解

    2016-12-11 22:26:18 正则表达式的意义:正则表达式是一个字符串处理工具,可以对字符串进行查找/提取/分割/替换等等,也可以对用户输入的内容进行匹配. 常用的预定义字符就不解释了,网上 ...

  10. Java中正则表达式的基本使用

    这里主要介绍的是Java中的正则类的基本使用.学了这些基本类的学习后,就可以查看更深入的正则规则. 学了本篇内容你就学习了Java正则的40%剩下的50%~60%需要读者查看API,学习更好的匹配规则 ...

最新文章

  1. C语言 素数平方之和
  2. mactex中文配置
  3. app应用内嵌h5页面怎么直接打开safari_localstroage过多存储满的情况下应该怎么办?...
  4. 点/线/面 等 几何关系运算 的网页 推荐+备忘
  5. 怎样让防火墙跟其他网络设备实现时钟同步
  6. python爬虫 库_七款必备的Python爬虫库,你知道几个?
  7. python猜名词甲乙丙_用python实现了一下:甲乙两人互猜数字(数理逻辑)
  8. CentOS7文本模式下配置及安装KVM虚拟机
  9. JAVA Swing GUI设计 WindowBuilder Pro Container使用大全1——JTabbePane(卡片)使用
  10. 大数据存在的安全隐患该如何防患
  11. 有趣的视频 国外计算机课程
  12. MATLAB实现主成分分析
  13. 2020高压电工模拟考试及高压电工模拟考试系统
  14. shawn0102_播客:留下每年35万美元的工作以学习编码-Shawn Wang访谈
  15. 嵌入式Linux入门指南(一)——学习路线篇
  16. 电脑怎么设置计算机系统,电脑定时开关机如何设置?
  17. 解决IE浏览器打印iframe页面时字体等样式缩小的问题
  18. C++实现大数运算(加减乘除求余)
  19. JSP网站开发之HTML入门知识及常用标记符 (一)
  20. android图片上传后台后旋转的关键原因:ExifInterface

热门文章

  1. python6翻了_Python老司机也会翻车!10个最容易犯的Python开发错误
  2. python交互模式什么意思_python交互模式是什么
  3. mysql 二进制 查询_MySql如何插入和查询二进制数据_MySQL
  4. java jslider 自定义_Java自定义JSlider UI
  5. 事务屏幕创建tcode_数据库并发事务存在的问题(脏读、不可重复读、幻读等)...
  6. Python学习入门基础教程(learning Python)--5.4 Python读文件详解
  7. HTML中可以有多个meta吗,HTML5中meta标签有三个主要属性是什么
  8. 学习笔记(二) 消息队列
  9. Oracle9i数据库DataGuard实施及维护手册3
  10. 百万数据查询优化技巧三十则