Java基础知识回顾--正则表达式

FPGA高速接口Aurora8B/10B协议实战:从IP核配置到数据流优化 本文详细介绍了FPGA高速接口Aurora8B/10B协议的实战应用,从IP核配置到数据流优化的全流程。通过Aurora8B/10B协议,开发者可以在FPGA间实现高效的数据传输,适用于高速接口设计。文章涵盖了协议基础、IP核配置、AXI4-Stream接口实战技巧以及性能优化策略,帮助读者快速掌握这一关键技术。 阅读详情

RegularExpressions
字符串处理利器

正则表达式语法
正则表达式包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。
特殊字符
下表包含了单字符元字符的列表以及它们在正则表达式中的行为。
若要匹配这些特殊字符之一,必须首先转义字符,即,在字符前面加反斜杠字符 ()。 例如,若要搜索“+”文本字符,可使用表达式“+”。
这里写图片描述
这里写图片描述

元字符
下表包含了多字符元字符的列表以及它们在正则表达式中的行为。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

非打印字符
下表包含表示非打印字符的转义序列。
这里写图片描述

优先级顺序
正则表达式的计算方式与算术表达式非常类似;即从左到右进行计算,并遵循优先级顺序。
下表按从高到低的顺序包含了正则表达式运算符的优先级顺序。
这里写图片描述

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


public class Test {

    public static void main(String[] args) {
        //简单认识正则表达式的概念
        /*
        p("abc".matches("..."));
        //两个反斜杠d就是转义一个反斜杠d表示数字
        p("a8729a".replaceAll("\\d", "-"));
        Pattern p = Pattern.compile("[a-z]{3}");
        Matcher m = p.matcher("fgh");
        p(m.matches());
        p("fgha".matches("[a-z]{3}"));
        */

        //初步认识. * + ? 
        // * 零个或多个字符
        // + 一个或多个字符
        // ? 一个或零个
        /*
        p("a".matches("."));
        p("aa".matches("aa"));
        p("aaaa".matches("a*"));
        p("aaaa".matches("a+"));
        p("".matches("a*"));
        p("aaaa".matches("a?"));
        p("".matches("a?"));
        p("a".matches("a?"));
        p("214523145234532".matches("\\d{3,100}"));
        p("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
        p("192".matches("[0-2][0-9][0-9]"));
        */

        //范围
        /*
        p("a".matches("[abc]"));
        //取非
        p("a".matches("[^abc]"));
        p("A".matches("[a-zA-Z]"));
        //底下两种都是或者
        p("A".matches("[a-z]|[A-Z]"));
        p("A".matches("[a-z[A-Z]]"));
        p("R".matches("[A-Z&&[RFG]]"));
        */

        //认识\s \w \d \
        /**
        * \s 所有的空白字符
        * \w 小写a-z和A-Z和下划线_和0-9,构成关键字的字符
        * \d 0-9
        **/
        /*
        p(" \n\r\t".matches("\\s{4}"));
        p(" ".matches("\\S"));
        p("a_8".matches("\\w{3}"));
        p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));
        p("\\".matches("\\\\"));
        */

        //POSIX Style
        //p("a".matches("\\p{Lower}"));

        //boundary
        /**
        * 这个介绍看后面配图
        **/
        /*
        p("hello sir".matches("^h.*"));
        p("hello sir".matches(".*ir$"));
        p("hello sir".matches("^h[a-z]{1,3}o\\b.*")); //true,\b是单词边界
        p("hellosir".matches("^h[a-z]{1,3}o\\b.*")); //false
        //whilte lines 空白行
        p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));

        p("aaa 8888c".matches(".*\\d{4}."));
        p("aaa 8888c".matches(".*\\b\\d{4}."));
        p("aaa8888c".matches(".*\\d{4}."));
        p("aaa8888c".matches(".*\\b\\d{4}."));
        */

        //email
        //p("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));

        //matches find lookingAt
        /*
        Pattern p = Pattern.compile("\\d{3,5}");
        String s = "123-34345-234-00";
        Matcher m = p.matcher(s);
        p(m.matches());
        m.reset();
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        p(m.start() + "-" + m.end());
        p(m.find());
        //p(m.start() + "-" + m.end());找不到用这个就会报错
        p(m.lookingAt()); //每次都从头开始找起
        p(m.lookingAt());
        p(m.lookingAt());
        p(m.lookingAt());
        */

        //replacement
        /*
        Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");
        StringBuffer buf = new StringBuffer();
        int i=0;
        while(m.find()) {
            i++;
            if(i%2 == 0) {
                m.appendReplacement(buf, "java");
            } else {
                m.appendReplacement(buf, "JAVA");
            }
        }
        m.appendTail(buf);
        p(buf);
        */

        //group
        /*
        Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})"); //这个中间的两个小括号就是分组用的,分为两组
        String s = "123aa-34345bb-234cc-00";
        Matcher m = p.matcher(s);
        while(m.find()) {
            //p(m.group());
            p(m.group(1)); //分组输出,正则表达式中小括号分组
        }
        */

        //qulifiers 修订词
        /*
        Pattern p = Pattern.compile(".{3,10}+[0-9]");  //一下子吞最大的10个,然后发现不匹配吐出一个匹配
        //Pattern p = Pattern.compile(".{3,10}?[0-9]");  //这个加问号的就是不贪婪的,只读最少的就是aaaa5
        String s = "aaaa5bbbb68";
        Matcher m = p.matcher(s);
        if(m.find())
            p(m.start() + "-" + m.end());
        else 
            p("not match!");
        */

        //non-capturing groups 用得比较少,用的时候试一下
        /*
        Pattern p = Pattern.compile(".{3}(?=a)");
        String s = "444a66b";
        Matcher m = p.matcher(s);
        while(m.find()) {
            p(m.group());
        }
        */

        //back refenrences 向前引用
        /*
        Pattern p = Pattern.compile("(\\d(\\d))\\2");
        String s = "122";
        Matcher m = p.matcher(s);
        p(m.matches());
        */

        //flags的简写
        //Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
        p("Java".matches("(?i)(java)"));
    }

    public static void p(Object o) {
        System.out.println(o);
    }

}

上述代码又看不懂的这有图片解释
这里写图片描述
这里写图片描述
这里写图片描述

下面贴出网页中抓取邮件的小例子。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class EmailSpider {

    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new FileReader("D:\\share\\courseware\\1043633.html"));
            String line = "";
            while((line=br.readLine()) != null) {
                parse(line);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private static void parse(String line) {
        Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
        Matcher m = p.matcher(line);
        while(m.find()) {
            System.out.println(m.group());
        }
    }

}
【气候极端指数】MATLAB计算各种气候极端指数 简介各类气候极端指数,及其MATLAB计算代码 阅读详情

相关推荐

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1119

eFuse加超低功耗MCU:工业电源路径保护与自动恢复设计解析

在嵌入式与工业设备的供电设计中,电源路径保护直接决定系统可靠性。传统保险丝和TVS响应慢、不可自恢复,难以应对瞬态过压与过流冲击。eFuse作为集成保护逻辑的智能电源开关,能在几十微秒内切断故障,并支持软启动、限流与状态输出;搭配超低功耗MCU,可实现故障记录、自动恢复和远程诊断。工业传感器节点、IO模块、电池供电仪表等场景,尤其依赖这种快速反应与智能管理结合的保护机制。以TPS259483 eFuse与STM32L021K4组合为例,讲解限流值、过压/欠压阈值计算,固件状态机设计及实测踩坑,为高可靠电源路

weixin_34037173的博客 406

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 401

JAVA基础知识回顾-----模式匹配(正则表达式)-----随想随写

模式匹配 正则表达式: 为了实现模式匹配,模式的构造应遵循某种规则,这样的模式称为正则表达式 包java.util.regex Pattern类 Matcher类 PatternSyntaxException异常类 MatchResult接口   Pattern 模式 Pattern对象是一个正则表达式的编译形式 Pattern构造方法私有,因此要得到该类对象,需要调用该类...

huiwinner的专栏 245

TTL电路搭建半加器实验:操作指南完整版

通过TTL电路搭建半加器,详解逻辑设计与实验步骤,帮助掌握数字电路中的半加器工作原理与实际应用,适合电子技术初学者动手实践。

weixin_42524864的博客 355

FPGA设计中的扇出约束实战:从XDC到代码优化的全流程解析

本文全面解析FPGA设计中扇出约束的重要性与应用,详细介绍了从XDC约束文件设置到HDL代码优化的全流程实战技巧。通过MAX_FANOUT约束控制信号负载,结合寄存器复制和物理优化策略,有效解决高扇出导致的时序违例和布线拥塞问题,提升设计性能和可靠性。

nept的博客 797

Java基础知识回顾(一):字符串小结

Java的基础知识回顾之字符串 一、引言   很多人喜欢在前面加入赘述,事实上去技术网站找相关的内容的一般都应当已经对相应知识有一定了解,因此我不再过多赘述字符串到底是什么东西,在官网中已经写得很明确了,字符串实际上是一种特殊的类,内置了一个字符数组(所以你能对它进行下标查找,包括集合的arraylist底层也是一个数组),并附加了很多其他方法,方便我们进行一些操作。有兴趣的话可以去百度中查阅...

huangxin2015的博客 383

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例)

本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。

n4o5p6q7r的博客 426

正则表达式复习

前言 这是我第一次复习之前学的的正则表达式,以后说不定会有补充和再次的复习。 本文会复习正则表达式的知识点,并且会写几个不同编程语言环境下的使用方式。 介绍 正则表达式是用来匹配字符串的,我们可以用来写爬虫爬网页上的内容,老实说我最初想学这个就是想在e站上爬点h图。 普通字符 首先,正则表达式里面的内容也是字符串,如果你在表达式里写了aA,那可以匹配到"1aAdfa"中的"aA"。其中aA代表着它...

Deadmice的博客 250

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 670

【YOLO目标检测全栈实战】98 YOLO模型在低光照环境下的自适应增强策略

你有没有遇到过这种情况?深夜加班调试产线检测模型,车间灯光昏暗,摄像头采集的图片黑乎乎一片,YOLO模型直接“罢工”——漏检率飙升到40%以上。上个月我在一个汽车零部件质检项目里就栽了跟头:白天模型跑得飞起,mAP@0.5达到0.92,可一到夜班,同样的产线、同样的零件,mAP直接掉到0.63。客户拍着桌子问我:“你这模型怎么还分白天黑夜?”

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 284

正则表达式-备忘

好久不用正则表达式,基础全忘光。最近项目需要,看thinking in java又刚好看到了字符串正则表达式,借此机会记录下来自己需要的基础知识以备不时之需。正则表达本身内容还有很多,以后有空继续丰富完善。 利用正则表达式去验证一些具有一定规则的字符串,往往事半功倍。 正则表达式在各种计算机语言或各种应用领域得到了广大的应用和发展,这里主要说javascript和java。 javasc...

weixin_30832351的博客 92

CS之攻击菜单详解-后门生成与上线

能够生成如HTA文档、office宏、payload生成器、exe程序。 windows可执行程序exe 可以看到能生成两种windows可执行程序,其分别代表stage分阶段和unstage(stageless)不分阶段。传送门 ——>Cobalt Strike中payload的stage与unstage区别 选择监听器后,按需生成不同类型的exe 然后在目标机器运行即可上线 payload生成器 选择生成如下类型的后门 ——>https://che...

渗透之路,攻防之间皆学问 6806

JAVA知识总结【持续更新】

JAVA知识总结【持续更新】基础知识标识符设计模式单例设计模式懒汉式饿汉式 基础知识 标识符 字母、数据、下划线、美元符号【0-9、a-z、A-Z、$、_ 】 数字不可以开头。 不可以使用关键字。 设计模式 单例设计模式 解决的问题:保证一个类在内存中的对象唯一性。 懒汉式 //懒汉式:延迟加载方式。 class Single2{ private Single2(){} private static Single2 s = null; public static Single2 ge

qq_40128285的博客 256

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java基础知识点杂谈(二)——常用系统类的使用

本文大致测试整理了一些常用系统类的常用方法,并附上部分原理(有很多资料是网上找的,地址一般都附在那个模块后面。当然这个翻阅别人优秀博客的过程也受益良多,尤其是String和Class的部分,以前不懂的地方看完后便豁然开朗)。

风过孤屿,山海自成诗行。 1277

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

面试总结三

上午去面试了。公司不小。面试官也灰常好。但是基础不扎实,说话无层次的我还是欠火候。下面把记忆中的笔试题写下来。以后好看看 1.写sql语言,主要考察日期 2.正则表达式 [^ef] 的意思 3.linux下,怎么在后台定时执行一段程序 crontab 4.使用哪些开源软件   5.java语言中基本类型short,float占多少二进制位 6.java序列化在输入输出中传...

小学生 236

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java基础知识回顾

关于JavaSE的一些比较基础的内容回顾,也是开始准备秋招和实习了qwq

backordinary的博客 1112

Python笔记

哎,刚上手python不久,还没有写过什么完整的项目,就敢去面试Python岗位的实习生了,今天被宽德科技的人问的彻底木有颜面,对于numpy等等库里面的东西还没怎么用过,然后问到C++里面的protected,模式设计等等,接着一大堆名词扔过来= =,早就忘记七七八八了,怪自己学的不扎实吧,比如list,dict,set只是知道怎么用,但是并不知道怎么实现的,其实最近也没有复习编程语言本质的东西

业精于勤,荒于嬉;行成于思,毁于随。 414

JAVA基础知识总结(万字长文一文了解JAVA所有基础知识)(补充篇)(正则表达式+Lambda表达式)

这期是Java长文总结的补充篇,主要总结Java中遇到的正则表达式与Lambda表达式。!!本期总结了正则表达式和Lambda表示式。

wxchyy的博客 1153

Java基础总结回顾

title: Java基础总结回顾 date: 2022-04-12 17:31:14 tags: Java categories: Java cover: https://cover.png feature: false 1. 说明 1.1 编译与运行 编译:是指将编写的 Java 源文件翻译成 JVM 认识的 class 文件,在这个过程中, javac 编译器会检查所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功 运行:是指将 class文件 交给 JVM 去运行,此时 J.

凡的博客 3099

正则表达式的语法

正则表达式语法简介  正则表达式是独立于任何语言的,虽然不同的 语言中其语法略有不同。  正则表达式的语法可以分为 • 特殊字符 • 边界匹配符 • 逻辑操作符 • 量词等  这些基本的语法规则合成使用,共同构成了正 则表达式强大的表示和匹配功能  一般字符的语法在前一节已经介绍过(例如字符i) 特殊字符的表达  例如,如果我们要查找一个字符串,这个字符 串中至少包含两行(两行可以不相邻),前面 一行中存在两个制表符,它们中间仅仅隔一数 字,后面一行中至少有一个制表符,则正则表 达式可以这样写:

静Yu的博客 3万+

【Java回顾】Day2 正则表达式----异常处理

必须是Throwable的子类检查性异常类,Exception类运行时异常类,RuntimeException类。

爱因斯小柚的博客 1279

JAVA ----正则表达式基础及相关应用

正则表达式是Java、Php等编程语言中相当重要的一环,在实际应用程序代码中相当广泛,更是网络安全领域中不可或缺的一点。下面总讲一下正则表达式的基础知识以及相关应用 什么是正则表达式:正则表达式(regular expression,简写为regex)是一个字符串,用来描述匹配一个字符串集合的模式。 对于字符串处理来说,正则表达式是一个强大的工具,可以使用正则表达式来匹配、替换和拆分字符串。 目录 HINT 1 匹配字符串 HINT 2 正则表达式语法 HINT ...

m0_52317537的博客 1106

java基础知识回顾

java常用API: StringBuffer:  1.      StringBuffer和String的区别:   http://blog.youkuaiyun.com/rmn190/article/details/1492013  2.      常用方法:  构造: StringBuffer();StringBuffer(CharSequence seq);    StringBuf

billycoder的专栏 523

Java基础知识回顾-replace和replaceAll

replace 和 replaceAll 是JAVA中常用的替换字符的方法,它们的区别是: 1)replace 的参数是 char 和 CharSequence ,即可以支持字符的替换,也支持字符串的替换( CharSequence 即字符串序列的意思,说白了也就是字符串); 2)replaceAll 的参数是regex ,即基于规则表达式的替换,比如,可以通过 replaceAll("\d", ...

随时记 356

Java知识回顾 (6)正则表达式、方法、文件与异常

一、正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 Java 正则表达式和 Perl 的是最为相似的。 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建...

weixin_30631587的博客 156
上一篇: Java基础知识回顾--网络编程基础
下一篇: Java基础知识回顾--反射机制
杜鲁门
博客等级 码龄11年 219粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值