正则表达式基本语法

笔记扫描版



在Java中使用正则表达式

示例1:一个简单的正则表达式
package cn.hanquan.reg;import java.util.regex.Matcher;
import java.util.regex.Pattern;/** 测试正则表达式的基本用法*/
public class TestReg {public static void main(String[] args) {// 正则表达式对象Pattern p = Pattern.compile("\\w+");// 待匹配字符串Matcher m = p.matcher("123ABCDEFGHIGK&&&&LMN123456abcd");// 匹配
//      boolean b1 = m.matches();// 整个序列是否符合正则对象
//      System.out.println(b1);while (m.find()) {// 扫描字符串 查找与该模式匹配的下一个子序列 并移动当前指针 下一次从指针位置继续System.out.println(m.group());// group() group(0)匹配整个表达式的子字符串}}
}
输出1
123ABCDEFGHIGK
LMN123456abcd

示例2:分组的使用

使用场景:找到一个合适的字符串,但只想输出其中的一部分。

如:通过匹配,得到邮箱账号123456@example.com,但只想要其中的123456,就可以使用分组的方式。

下面这个例子说明了m.group(1)括号中的数,也就是组号,的含义。

package cn.hanquan.reg;import java.util.regex.Matcher;
import java.util.regex.Pattern;/** 测试正则表达式的分组*/
public class TestReg {public static void main(String[] args) {// 正则表达式对象Pattern p = Pattern.compile("([a-z]+)([0-9]+)");// 待匹配字符串Matcher m = p.matcher("aaaaaa123     eeeeee77777       wwwww888");// 匹配while (m.find()) {System.out.println("" + m.group());// group() group(0)匹配整个表达式的子字符串System.out.println("--------------" + m.group(1));System.out.println("----------------------------" + m.group(2));}}
}

如何在RegexBuddy软件中使用正则表达式的分组功能

输出2
aaaaaa123
--------------aaaaaa
----------------------------123
eeeeee77777
--------------eeeeee
----------------------------77777
wwwww888
--------------wwwww
----------------------------888

示例3:替换匹配好的字符串
package cn.hanquan.reg;import java.util.regex.Matcher;
import java.util.regex.Pattern;/** 测试正则表达式的替换基本用法*/
public class TestReg {public static void main(String[] args) {// 正则表达式对象Pattern p = Pattern.compile("([a-z]+)([0-9]+)");// 待匹配字符串Matcher m = p.matcher("aaaaaa123     eeeeee77777       wwwww888");// 替换System.out.println(m.replaceAll("#"));}
}
输出3
#     #       #

示例4:使用正则表达式分割
package cn.hanquan.reg;import java.util.Arrays;
/** 测试正则表达式的分割*/
public class TestReg {public static void main(String[] args) {String str = "ABC123DEFG456HIJK789LMN";// String[] arrs = str.split("\\d+");// 效果相同String[] arrs = str.split("[0-9]+");System.out.println(Arrays.toString(arrs));}
}
输出4
[ABC, DEFG, HIJK, LMN]

示例5:正则表达式爬取网页中的链接

正则匹配HTML代码中的网页链接:(?<=href=")[a-z]+://[^\s]*(?=")

package cn.hanquan.reg;import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/** 测试正则表达式的分割*/
public class URLSpider {// 获取url对应的源代码public static String getURLContent(String urlStr, String charSet) {StringBuilder sb = new StringBuilder();try {URL url = new URL(urlStr);BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), Charset.forName(charSet)));String temp = "";while ((temp = reader.readLine()) != null) {sb.append(temp + "\r\n");}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return sb.toString();}// 正则匹配public static List<String> getMatherSubstrs(String str, String regex) {List<String> list = new ArrayList<String>();Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while (m.find()) {list.add(m.group());}return list;}public static void main(String[] args) throws FileNotFoundException {// 获取源码String str = getURLContent("http://www.163.com", "gbk");// 正则匹配List<String> list = getMatherSubstrs(str, "(?<=href=\")[a-z]+://[^\\s]*(?=\")");// 打印结果for (String s : list) {System.out.println(s);}}
}
部分输出

【Java正则表达式】正则基本语法、使用方式(分组、替换、分割)、简单爬虫基础相关推荐

  1. java正则表达式的基本语法以及不同环境的表单验证

    正则开始:^ 正则结束:$ 数字:[0-9]  \\d 字母:[a-z A-Z] 正则符号: 含义 符号 数字 [0-9]   \\d 字母 [a-zA-Z] 空白字符 [ \n\t\r\f\x0B] ...

  2. java 正则表达式 和 js正则表达式

    最近项目里面频繁使用到正则表达式,在这里将java正则表达式和js正则表达式都做个记录,以便日后参考. 目录 一 java正则表达式 正则规则 java字符串常用的正则方法 java常用的正则表达式 ...

  3. java正则表达式爬虫_Java简单爬虫系列(3)---正则表达式和Java正则API的使用

    上一篇内容写了如何请求资源,那么资源请求下载之后我们就要对它就行解析了,解析之前我们先熟悉一下正则表达式 正则表达式在平常使用时还是很广泛的,比如说表单输入验证,验证手机号邮箱之类,Java的字符串匹 ...

  4. java正则表达式语法(java正整数正则表达式)

    java正则表达式 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明: "^The": 开头一定要有"The"字符串; "of de ...

  5. java 正则表达式 demo_JAVA正则表达式语法

    JAVA正则表达式语法(转) 正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符").模式描述在搜索文本时要匹配的一个或 ...

  6. (转)JAVA正则表达式语法大全

    [正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...

  7. Java正则表达式之分组和替换

    正则表达式的子表达式(分组)不是很好懂,但却是很强大的文本处理工具. 1 正则表达式热身 匹配电话号码 // 电话号码匹配 // 手机号段只有 13xxx 15xxx 18xxxx 17xxx Sys ...

  8. java正则表达式语法

    java正则表达式语法 这里简单总结一下我对java里的正则表达式一部分语法的学习 一. 普通字符 字母.数字.汉字.下划线,以及其他没有特殊含义的字符都可作为正则表达式匹配他们本身.例如正则表达式& ...

  9. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 正则表达式是什么?用我的理解就是一个表达式.用来匹配,替换,判断字符串,之前业务就出现过判断返回值是否为邮箱. 以下内容来自于http://baike.xsoftlab ...

最新文章

  1. 软件工程实践第二次作业——个人项目实战(数独)
  2. linux下载哪个python版本-Linux下切换Python版本的几种方法
  3. 10月第3周网络安全报告:新增信息安全漏洞308个
  4. 【广告技术】如何科学地划分用户群体?在聚类中考虑用户特征和社会关系
  5. c#泛型作为返回类型的写法
  6. 【牛客 - 82B】区间的连续段(贪心,建图,倍增)
  7. MYSQL返回指定时间间隔函数DATE_SUB和TO_DAYS详解
  8. NanoPi M1 Plus:Allwinner H3 搭建编译环境、编译主线Uboot、编译主线Linux Kernel 4.14、加Matrix2‘8屏、加Qt
  9. 【51单片机】单片机仿真软件Proteus 8.7破解和汉化教程(附下载地址)
  10. 中国书籍出版情况分析:2020年中国书籍出版总印数为65.2亿册(张),其中社科人文类占书籍94.8%[图]
  11. 计算机系统常见故障及处理,电脑常见故障以及解决方案都在这里!
  12. 雷达一维距离像怎么用matlab仿真出来,雷达目标识别之一维距离像的学习
  13. C:\WINDOWS\system32\config\systemprofile\Desktop引用了一个不可用的位置
  14. Python:实现SCC的Kosaraju算法(附完整源码)
  15. 计算机应用发sci,计算机算法方面能选择哪些sci期刊
  16. EM算法-硬币实验的理解
  17. 程序员提高阅读代码能力的几个方法
  18. 如何强迫您的Apple Watch与iPhone同步
  19. RS232转Profinet网关汽车行业上的使用案例
  20. 计算机领慧讲堂背景图片,在考生文件夹下打开文档WORD.DOCX。

热门文章

  1. 中石油训练赛 - 小说(最短路+二分)
  2. php滚动公告源码,JavaScript_jquery垂直公告滚动实现代码,复制代码 代码如下: !DOCTYPE - phpStudy...
  3. python变量无需创建赋值_Python 第 2 章 变量及赋值运算符
  4. python xlrd读取excel-使用Python xlrd模块读取Excel格式文件的方法
  5. java jfreechar鱼刺图_java使用jfreechar绘制饼型统计图
  6. 6.变量的使用.rs
  7. Docker 部署不香吗?
  8. 完成一个休闲网络游戏需要学习的知识
  9. 大话ion系列(五)
  10. LiveVideoStack音视频技术年度评奖启动