正则表达式及其应用

demo1:

package 正则表达式;public class demo1 {public static void main(String[] args) {//只能是a b cSystem.out.println("a".matches("[abc]"));//true//前后校验字符个数需要一致System.out.println("ab".matches("[abc]"));//falseSystem.out.println("ab".matches("[abc][abc]"));//trueSystem.out.println("--------------------------------------");//不能出现a b cSystem.out.println("a".matches("[^abc]"));//falseSystem.out.println("d".matches("[^abc]"));//trueSystem.out.println("zz".matches("[^abc][^abc]"));//trueSystem.out.println("--------------------------------------");//a-z 或 A-Z()包括头尾范围System.out.println("a".matches("[a-zA-Z]"));//trueSystem.out.println("zz".matches("[^a-z][^a-z]"));//falseSystem.out.println("---------------------------------------");//[a-d[m-p]] a到d或者m到pSystem.out.println("a".matches("[a-z[A-Z]]"));//trueSystem.out.println("zz".matches("[a-d[m-z]][a-d[m-z]]"));//trueSystem.out.println("---------------------------------------");//[a-z&&[def]] a-z中同时包含d e fSystem.out.println("a".matches("[a-z&&[def]]"));//falseSystem.out.println("d".matches("[a-z&&[def]]"));//trueSystem.out.println("---------------------------------------");//[a-z&&[^bc]] a-z和非 b c 得交集System.out.println("a".matches("[a-z&&[^bc]]"));//trueSystem.out.println("b".matches("[a-z&&[^bc]]"));//falseSystem.out.println("---------------------------------------");//[a-z&&[^m-p]] a-z和除了m-p的交集 (等同于[a-lq-z])System.out.println("a".matches("[a-z&&[^m-p]]"));//trueSystem.out.println("m".matches("[a-z&&[^m-p]]"));//falseSystem.out.println("---------------------------------------");//[a-z&&[def]]//细节:如果要求两个范围的交集,那么需要写符号&&//如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号System.out.println("&".matches("[a-z&[def]]"));//true}
}

demo2:

package 正则表达式;import java.util.StringJoiner;public class demo2 {public static void main(String[] args) {//练习:以字符串的形式打印一个双引号//在Java中表示字符串的开头或者结尾//此时\表示转义字符,改变了后面那个双引号原本的含义//把他变成了一个普普通通的双引号而已。System.out.println("\"");// \表示转义字符//前面的\是一个转义字符,改变了后面\原本的含义,把他变成一个普普通通的\而己。System.out.println("F:\\Java学习\\代码\\myapi\\src\\正则表达式");// .表示任意一个字符System.out.println("你".matches("."));//trueSystem.out.println("你好呀".matches(".."));//falseSystem.out.println("----------------------------");//  \\d只能是任意的一位数字//  简单来记:两个\\表示一个\,一个\表示一个转义字符,一个d表示一个数字。System.out.println("123".matches("\\d"));//falseSystem.out.println("123".matches("\\d\\d\\d"));//trueSystem.out.println("----------------------------");// \\w只能是一位单词字符[a-zA-Z_0-9]System.out.println("a".matches("\\w"));//trueSystem.out.println("A".matches("\\w"));//trueSystem.out.println("_".matches("\\w"));//trueSystem.out.println("0".matches("\\w"));//trueSystem.out.println("----------------------------");// \\W(大写的)非单词字符System.out.println("a".matches("\\W"));//falseSystem.out.println("你".matches("\\W"));//trueSystem.out.println("----------------------------");//以上正则匹配只能校验单个字符//必须是 数字 字母 下划线,至少6位System.out.println("sunshine1990212".matches("\\w{6,}"));//trueSystem.out.println("sun".matches("\\w{6,}"));//falseSystem.out.println("----------------------------");//必须是数字和字符 必须是4位System.out.println("23df".matches("[a-zA-Z0-9]{4}"));//trueSystem.out.println("23_f".matches("[a-zA-Z0-9]{4}"));//falseSystem.out.println("23df".matches("[\\w&&[^_]]{4}"));//trueSystem.out.println("23_f".matches("[\\w&&[^_]]{4}"));//false}
}

demo3:

package 正则表达式;public class demo3 {public static void main(String[] args) {
//        请编写正则表达式验证用户输入的手机号码是否满足要求。
//        请编写正则表达式验证用户输入的邮箱号是否满足要求。
//        请编写正则表达式验证用户输入的电话号码是否满足要求。
//        验证手机号码 13112345678 1371234566713945679027139456790271
//        验证座机电话号码 020-2324242 02122442027-42424 0712-3242434
//        验证邮箱号码 3232323@q9.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn//心得://拿着一个正确的数据,从左到右依次去写。//13112345678//分成三部分://第一部分:1表示手机号码只能以1开头//第二部分:[3-9]表示手机号码第二位只能是3-9之间的//第三部分:\\d{9}表示任意数字可以出现9次,也只能出现9次String regex1 = "1[3-9]\\d{9}";boolean matches = "13112345678".matches(regex1);System.out.println(matches);System.out.println("-------------------------------------------------");//座机电话号码//020-2324242 02122442 027-42424//思路://在书写座机号正则的时候需要把正确的数据分为三部分//一:区号 @\\d{2,3}s 0:表示区号一定是以0开头的// \\d{2,3}:表示区号从第二位开始可以是任意的数字,可以出现2到3次。//二:-?表示次数,@次或一次//三:号码:号码的第一位也不能以8开头,从第二位开始可以是任意的数字,号码的总长度:5-10位String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";boolean matches1 = "02112442".matches(regex2);System.out.println(matches1);System.out.println("-------------------------------------------------");//邮箱号码//3232323@qq.com    zhangsan@itcast.cnn     dlei0009@163.com    dleie0e9@pci.com.cn//思路://在书写邮箱号码正则的时候需要把正确的数据分为三部分//第一部分:@的左边\\w+//任意的字母数字下划线,至少出现一次就可以了//第二部分:@ 只能出现一次//第三部分://          3.1  .的左边[\\w&&[^_]]{2,6}//          任意的字母加数字,总共出现2-6次(此时不能出现下划线)//          3.2  . \\.(单个的.代表任意字符,需转义)//大写字母,小写字母都可以,只能出现2-3次[a-zA-z]{2,3}//我们可以把3.2和3.3看成一组,这一组可以出现1次或者两次String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";System.out.println("3232323@qq.com".matches(regex3));System.out.println("zhangsan@itcast.cnn".matches(regex3));System.out.println("dlei0009@163.com".matches(regex3));System.out.println("dleie0e9@pci.com.cn".matches(regex3));System.out.println("-------------------------------------------------");//忽略大小写的书写方式//在匹配的时候忽略abc的大小写//(?i)abc :代表abc忽略大小写String regex4 = "a((?i)b)c";//只忽略b的大小写System.out.println("abc".matches(regex4));System.out.println("ABC".matches(regex4));System.out.println("aBc".matches(regex4));System.out.println("-------------------------------------------------");//身份证号码的严格校验//编写正则的小心得://第一步:按照正确的数据进行拆分//第二步:找每一部分的规律,并编写正则表达式//第三步:把每一部分的正则拼接在一起,就是最终的结果//书写的时候:从左到右去书写。//410801   1993 02 28 457x//前面6位:省份,市区,派出所等信息第一位不能是0,后面5位是任意数字        [1-9]\\d{5}//年的前半段:18 19 20                                            (18|19|20)//年的后半段:任意数字出现两次                                       \\d{2}//月份:01 ~09 10 11 12                                          (0[1-9]|1[0-2])//日期:01~09  10~19 20~29 30 31                                 (0[1-9]|[12]\\d|3[01])//后面四位:任意数字出现3次 最后一位可以是数字也可以是大写x或者小写x        \\d{3}[\\dxx]String regex6 ="[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]";System.out.println("41080119930228457x".matches(regex6));}
}

应用–爬虫:

demo1:

package 爬虫;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class demo1 {public static void main(String[] args) {String str = "Java自从95年问世以米,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会遂渐登上历史舞台";//Pattern:表示正则表达式//Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。//在大串中去找符合匹配规则的子串。//获取正则表达式的对象Pattern p = Pattern.compile("Java\\d{0,2}");//获取文本匹配器的对象//拿着m去读取str,找符合p规则的子串Matcher m = p.matcher(str);//拿着文本匹配器从头开始读取,寻找是否有满足规则的子串//如果没有,方法返回false//如果有,返回true。在底层记录子串的起始索引和结束索引+1while (m.find()) {//方法底层会根据find方法记录的索引进行字符串的截取// substring(起始索引,结束索引);包头不包尾// (0,4)但是不包含4索引// 会把截取的小串进行返回。String s = m.group();System.out.println(s);}}
}

demo2:

package 爬虫;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class demo2 {public static void main(String[] args) {//需求:把下面文本中的座机电话,邮箱,手机号,热线都爬取出来。来黑马程序员学习Java,//手机号:18512516758,18512508907//或者联系邮箱:boniu@itcast.cn//座机电话:01036517895,010-98951256//邮箱:bozai@itcast.cn,//热线电话:400-618-9090,400-618-4000,4006184000,4006189090//手机号正则表达式:1[3-9]\\d{9}//邮箱正则表达式:  \w+@[\w&&[^_]]{2,6}(\.[a-zA-Z]{2,3}){1,2}//座机电话   0\d{2,3}-?[1-9]\d{4,9}//热线电话:400-?618-?[1-9]\\d{3}String s="来黑马程序员学习Java,"+"电话:18512516758,18512508907"+"或者联系邮箱:boniu@itcast.cn,"+"座机电话:01036517895,010-98951256"+"邮箱:bozai@itcast.cn,"+"热线电话:400-618-9090,400-618-4000,4006184000,4006189090";String regex = "(1[3-9]\\d{9})|(\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2})|(0\\d{2,3}-?[1-9]\\d{4,9})|(400-?618-?[1-9]\\d{3})";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(s);while (matcher.find()){matcher.group();System.out.println(matcher.group());}}
}

demo3:

package 爬虫;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class demo3 {public static void main(String[] args) {//需求1:爬取版本号为8,11,17的Java文本,但是只要Java,不显示版本号。//需求2:爬取版本号为8,11,17的lava文本。正确爬取结果为:java8java11java17java17//需求3:爬取除了版本号为8,11,17的Java文本String s= "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";//1.定义正则表达式//?理解为前面的数据Java//=表示在Java后面要随的数据//但是在获取的时候,只获取前半部分//需求1:(获取前面部分)String regex1 = "Java(?=8|11|17)";//需求2:(获取所有)String regex2 = "Java(?:8|11|17)";//需求3:(获取不是指定内容的前面部分)String regex3 = "Java(?!8|11|17)";Pattern p = Pattern.compile(regex3);Matcher m = p.matcher(s);while (m.find()){System.out.println(m.group());}}
}

demo4:

package 爬虫;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class demo4 {public static void main(String[] args) {//有如下文本,请按照要求爬取数据。//Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa经历了很多版本,//目前企业中用的最多的是ava8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台//需求1:按照ab+的方式爬取ab,b尽可能多获取//需求2:按照ab+的方式爬取ab,b尽可能少获取//        只写+和*表示贪婪匹配
//        +? 非贪婪匹配
//        *? 非贪婪匹配
//        贪婪爬取:在爬取数据的时候尽可能的多获取数据
//        非贪婪爬取:在爬取数据的时候尽可能的少获取数据
//        ab+:
//        贪婪爬取:abbbbbbbbbbbb
//        非贪婪爬取:abString str = "Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa经历了很多版本,目前企业中用的最多的是ava8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";String reg = "ab+?";Pattern p = Pattern.compile(reg);Matcher m = p.matcher(str);while (m.find()){System.out.println(m.group());}}
}

demo5

package 爬虫;public class demo5 {public static void main(String[] args) {//public string replaceAll(string regex,string newstr)// public string[] split(string regex)://按照正则表达式的规则进行替换按照正则表达式的规则切割字符串//有一段字符串:小诗诗dqwefqwfqwfwg12312小丹丹dqwefqwfqwfwg12312小惠惠// 要求1:把字符串中三个姓名之间的字母替换为vs// 要求2:把字符串中的三个姓名切割出来String str = "小诗诗dqwefqwfqwfwg12312小丹丹dqwefqwfqwfwg12312小惠惠";String s = str.replaceAll("[\\w&&[^_]]{1,}", "vs");System.out.println(s);String[] split = str.split("[\\w&&[^_]]{1,}");for (int i = 0; i < split.length; i++) {System.out.print(split[i]+" ");}}
}

demo6:

package 爬虫;public class demo6 {public static void main(String[] args) {//需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符//举例:a123a b456b   17891   &abc&//使用正则表达式"(.).+.\\1",其中(.)匹配首字符并将其作为一个分组,.+匹配中间任意字符,\\1表示匹配与首字符相同的字符。String regex1 = "(.).+\\1";System.out.println("a123a".matches(regex1));System.out.println("b456b".matches(regex1));System.out.println("17891".matches(regex1));System.out.println("&abc&".matches(regex1));System.out.println("a123b".matches(regex1));System.out.println("--------------------------------------");//需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符// 举例:abc123abc b456b   123789123   &!@abc&!@//使用正则表达式"(.+).+\\1",其中(.+)匹配开始部分并作为一个分组,.+匹配中间任意字符,\\1表示匹配与开始部分相同的字符。String regex2 = "(.+).+\\1";System.out.println("abc123abc".matches(regex2));System.out.println("123789123".matches(regex2));System.out.println("&!@abc&!@".matches(regex2));System.out.println("1&!@abc&!@".matches(regex2));System.out.println("--------------------------------------");//需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致// 举例:aaa123aaa bbb456bbb 111789111 &&abc&&//(.):把首字母看做一组//  \\2:把首字母拿出来再次使用// *:作用于\\2,表示后面重复的内容出现0次或多次//使用正则表达式"((.)\\2*).+\\1",其中((.)\\2*)匹配开始部分并作为一个分组,其中(.)匹配首字符并作为一个子分组,\\2*表示匹配与首字符相同的字符0次或多次,.+匹配中间任意字符,\\1表示匹配与开始部分相同的字符。String regex3 = "((.)\\2*).+\\1";System.out.println("aaa123aaa".matches(regex3));System.out.println("bbb456bbb".matches(regex3));System.out.println("111789111".matches(regex3));System.out.println("&&abc&&".matches(regex3));System.out.println("123789123".matches(regex3));}
}

demo7:

package 爬虫;public class demo7 {public static void main(String[] args) {/*需求:将字符串:我要学学编编编编程程程程程程替换为:我要学编程*/String str = "我要学学编编编编程程程程程程";//需求:把重复的内容 替换为单个的//(.)表示把重复内容的第一个字符看做一组//\\1 表示第一字符再次出现//+至少一次//$1表示把正则表达式中第一组的内容,再拿出来用String newStr = str.replaceAll("(.)\\1+","$1");System.out.println(newStr);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[JAVASE] 类和对象(五) -- 抽象类和接口

目录 一. 抽象类 1.1 抽象类的定义 1.2 抽象类的实现 1.3 抽象类的作用 1.4 抽象类注意事项 二. 接口 2.1 接口的定义 2.2 接口的实现 2.3 接口的作用 2.4 接口注意事项 三. 总结 一. 抽象类 1.1 抽象类的定义 如果一个类中没有包含足够的信息来描绘一个具体的对象, 那么…

远程PLC、工控设备异地调试,贝锐蒲公英异地组网方案简单高效

北京宇东宁科技有限公司专门提供非标机电设备&#xff0c;能够用于金属制品的加工制造。设备主要采用西门子的PLC作为控制系统&#xff0c;同时能够连接上位机用于产量、温度、压力、电机运行数据的监控&#xff0c;以及工厂的大屏呈现需求。目前&#xff0c;客户主要是市场上的…

代码随想录算法训练营第三十三天|1005.K次取反后最大化的数组和,134. 加油站

1005.K次取反后最大化的数组和 1.取反次数<负数个数 优先把绝对值较大的负数取反 2.取反个数>负数个数 先把所有负数都取反成正数&#xff0c;之后把所有次数都用来对绝对值最小的数字进行取反 134. 加油站 这里首先每一个站台都是有净收益的&#xff0c;净收益等于该…

百度陈之若:第一批大模型伙伴已经实现财富自由了

大模型继续在 2024 年的春天里疾驰而进。 2024 年 4 月 9 日&#xff0c;百度智能云在成都举行的首届 GENERATE 全球生态大会上&#xff0c;公布了过去一年大模型生态建设的最新“成绩单” 。 目前&#xff0c;已经有超过 8.5 万客户在使用千帆大模型平台&#xff0c;开发了超…

EI稳定检索--人文社科类会议(ICBAR 2024)

【ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024) 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 【高录用•快检索&#xff0c;ACM独立出版-稳定快速EI检索 | 往届均已完成EI, Scopus检索】 【见…

大屏幕适配方法之:transform:scale()

CSS3新增的属性transform主要用于设置元素的变形&#xff0c;比如旋转、倾斜、缩放等。我们今天要用到的正式它的缩放功能transform:scale() 取值 单一数值 单一的数值即指定了一个缩放系数&#xff0c;同时作用于 X 轴和 Y 轴让该元素进行缩放&#xff0c;相当于指定了单个值…

深入理解Java中的异步编程与CompletableFuture

在现代的软件开发中&#xff0c;异步编程已经成为处理并发和提升性能的重要手段之一。Java作为一门流行的编程语言&#xff0c;提供了多种异步编程的方式。其中&#xff0c;CompletableFuture是Java 8引入的一个强大的工具&#xff0c;用于简化异步编程并提高代码的可读性和可维…

Python快速提取局域网在线IP及对应MAC地址

在网络管理和安全监控中,了解局域网内的在线设备及其对应的IP和MAC地址是非常重要的。本文将介绍如何使用Python快速提取局域网内所有在线设备的IP地址及其对应的MAC地址。我们将使用Python的第三方库和一些简单的网络扫描技术,使这一过程变得高效且自动化。无论你是网络管理…

SAPUI5基础知识2 - 手动创建一个SAPUI5的项目

1. 前言 在本篇文章中&#xff0c;我们将手动一步一步建立出第一个SAPUI5的 ‘Hello World!’ 项目。 2. 步骤详解 2.1 在BAS中建立Dev Space 进入SAP Business Application Studio的Dev Space Manger&#xff0c;选择创建Dev Space。 勾选HTML5 Application Template插件…

[Linux] shell程序编写

一、shell是什么 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。 …

数据读取及分隔方法

文章目录 读取数据1. 读取文本文件2.pandas库读取数据3.读取JSON文件 数据分隔方法1.split()2.re.split()3.splitlines() 读取数据 1. 读取文本文件 读取文本文件&#xff1a;可以使用内置的open()函数来打开文本文件&#xff0c;并使用read()或readlines()方法读取文件内容。…

Linux:网页的各种状态码及其解释

Linux&#xff1a;网页的状态码 定义&#xff1a;状态码由三位数值组成&#xff0c;第一位数值定义了响应的类别&#xff0c;且有五种可能取值 状态码含义详解1xx指示信息&#xff08;信息性状态码&#xff09;表示请求已接受&#xff0c;继续处理2xx成功表示请求已被成功接受…

overflow:scroll不生效解决

参考 问题 在给组织架构组件的外框设置overflow:scroll的时候不生效&#xff0c;没有显示滚动条 原因 这个组件里面实在是包裹太多层了&#xff0c;得找到离内容层最近的那层包裹层设置overflow才有效 解决 找到离内容层最近的那层包裹层设置overflow

OpenWrt改网桥模式(AP模式)

OpenWrt改网桥模式&#xff08;AP模式&#xff09; 点击“接口” 删掉所有 wan 接口 点击“设备”&#xff0c;配置“br-lan" 点击网桥接口&#xff0c;勾选所有接口 点击保存 添加新接口&#xff08;不添加的话路由器自身系统没网&#xff09; 返回 “网络” - “接…

k8s部署presto

&#xff08;作者&#xff1a;陈玓玏&#xff09; 一、前提条件 已部署k8s&#xff1b;已部署hadoop和hive&#xff0c;可参考以下链接&#xff1a; https://blog.csdn.net/weixin_39750084/article/details/136750613?spm1001.2014.3001.5502 https://blog.csdn.net/wei…

Linux-挂盘-分区-卸盘

Linux-挂盘-分区-卸盘 1. 添加硬盘 2. 查看硬盘 [rootlocalhost /]# lsblk # 查看我们新添加的磁盘 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 …

pdf使用pdfbox切割pdf文件MultipartFile

引入依赖&#xff1a; <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.25</version></dependency>测试代码&#xff1a; import io.choerodon.core.iam.ResourceLevel; impo…

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

1 中国信通院联合业界制定、发布多项标准化成果&#xff0c;推动产业发展 大模型开启了 AI 原生时代&#xff0c;云边端协同 AI 构建了「集中式大规模训练」、「边缘分布式协同推理」新范式&#xff0c;有效降低推理时延和成本&#xff0c;提升数据安全和隐私性&#xff0c;也…

微服务技术框架-注册中心-能解决的问题

在微服务架构中&#xff0c;注册中心是一个关键组件&#xff0c;它解决了许多微服务通信和管理中的问题。以下是注册中心能够解决的主要问题&#xff1a; 1. 动态服务发现 问题&#xff1a;微服务实例动态增加或减少&#xff0c;手动配置服务地址非常繁琐且容易出错。 解决方案…

python的Serial 串口缓存区数据处理

没头脑很久没有处理串口数据&#xff0c;今日测试一个测距传感模块&#xff0c;用简单的serial.read没十几秒就屏幕冻住了&#xff0c;不往下print了。后来反应过来是不停访问串口&#xff0c;导致串口数据缓存区溢出了。有一个比较保险的方式如下&#xff0c;简单而言是成块读…