JAVA随笔系列01-->正则表达式使用

本文详细介绍了正则表达式的基本概念、字符集及量词,并通过Java代码展示了正则表达式的匹配、替换和截取操作。适用于初学者了解和掌握正则表达式在Java中的应用。

前言

所有坚韧不拔的努力迟早会取得报酬的。

一、正则表达式是什么?

  • 描述了一种字符串匹配的模式(pattern)
  • 功能一:用来检查一个字符串串是否含有某种子字符串
  • 功能二:将匹配的子串(满足规则的字符串)进行替换
  • 功能三:从某个字符串中取出符合某个条件的子串
  • ......

二、正则表达式字符集介绍

2.1 正则表达式中的元字符

元字符匹配内容说明
.匹配除换行符以外的任意字符
\s匹配任意的空白符
\d匹配数字
^匹配字符串的开始
$匹配字符串的结束
\D匹配非数字
\S匹配非空白符
()匹配括号内的表达式,也表示一个组
[]匹配字符组中的字符
[^]匹配除了字符组中字符的所有字符

2.2 正则表达式中的量词

量词用法说明
  • |重复零次或更多次|
  • |重复一次或更多次|
    ? | 重复零次或一次|
    {n} |重复n次|
    {n,} |重复n次或更多次|
    {n,m} |重复n到m次|

三、java正则表达式使用实战

3.1 判断字符串是否满足正则表达式模版

import java.util.regex.Pattern;

public class RegDemo {
	public static void main(String[] args) {
		boolean value = Pattern.matches("\\d+","2223");   // "\\d+"字符模版 ,"2223" 源字符串
                System.out.println( value );
      }
}

3.2 正则表达式加强实例

import java.util.regex.Pattern;

public class RegDemo {
	public static void main(String[] args) {
                 String str = "a878678b";
		boolean value = Pattern.matches("a\\d+b",str);   // 满足 a开头  包含多个数字  b结尾的字符串
                System.out.println( value );
      }
}

3.3 利用正则表达式进行截取操作

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegDemo {
	public static void main(String[] args) {
                String str = "a123456789b";
		Pattern r = Pattern.compile("4(.+)6");  //字符模版对象
		Matcher m = r.matcher(str);  //匹配正则表达式对象
		m.find(); // 执行匹配操作
		System.out.println( m.group(1) ); // group()方法获取结果
      }
}

3.4 利用正则表达式进行多次截取操作

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegDemo {
	public static void main(String[] args) {
                String str = "a123456789b486aab496ccc";
		Pattern r = Pattern.compile("4(.+)6");  //字符模版对象
		Matcher m = r.matcher(str);  //匹配正则表达式对象
		while(m.find()){                          // 循环的方式匹配多项操作
		      System.out.println( m.group(1) );   // group()方法获取结果
                 }
      }
}

四、小结

  • 正则表达式操作需要掌握2个方面的知识:1、是正则表达式字符集的含义和规则 2、java代码中Pattern、Matcher类的操作
  • 上述由于篇幅原因,关于其它的正则表达式的应用读者可以根据我的例子去进行扩展
  • 笔者是因为最近给湖南师大的学生上实训需要讲一些 java 爬虫方面提高学生的学习兴趣扩展的一个知识点,刚好给学生讲完就分享下😊
### 如何优化或改进HTML代码的结构和可读性 为了提升HTML代码的结构化程度以及增强其可读性,可以从以下几个方面入手: #### 语义化的标签使用 采用具有明确意义的HTML标签代替通用的`<div>`或`<span>`标签能够显著改善代码的理解难度。例如,对于页面的主要部分应使用 `<header>`, `<nav>`, `<main>`, `<article>`, `<section>`, 和 `<footer>` 等语义化标签[^1]。 #### 层级分明的嵌套关系 保持清晰合理的DOM树层次有助于开发者快速定位特定区域并理解整体布局。避免过多不必要的包裹层或者扁平化处理不当的情况发生[^2]。 #### 添加必要的注释说明 虽然智能工具可以帮助生成一些基础性的描述信息,但在复杂业务逻辑处手动加入简洁明了的文字解释仍然非常重要。这不仅方便团队协作交流也利于后期维护工作开展。 #### 利用CSS预处理器简化样式管理 如果项目规模较大,则考虑引入SASS/LESS之类的解决方案来分离表现层定义从而减少内联style属性的应用频率;同时也可以借助它们提供的变量功能统一控制颜色字体大小等全局参数设定[^3]。 以下是经过上述原则调整后的示范版本: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>示例网页</title> <!-- 外部资源链接 --> <link rel="stylesheet" href="styles.css"> </head> <body> <header role="banner"> <hgroup> <h1>网站名称</h1> <p>副标题简介...</p> </hgroup> <nav aria-label="主要导航栏"> <ul> <li><a href="#home">首页</a></li> ... </ul> </nav> </header> <main role="main"> <section id="content-area"> <article> <header> <h2>文章标题</h2> <time datetime="YYYY-MM-DDTHH:mm:ssZ">发表时间</time> </header> <p>正文内容...</p> ... </article> <!-- 更多区块... --> </section> <aside role="complementary"> 广告位或者其他辅助信息... </aside> </main> <footer role="contentinfo"> 版权声明 & 联系方式... </footer> <script src="scripts.js"></script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挨踢~小先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值