Java中正则表达式的用法

QUESTION

博主在进行华为杯的人工智能比赛中,要做的题目需要对json格式的数据进行选取,虽然说 “人生苦短,我用python”,但这也只是自嘲。用Java选取大json更方便。在写代码的时候,就遇到了如何使用正则表达式对字符串进行选取。

ANSWER

在寻找网上的文章时也看到了许多大佬们写的博客,在此感谢大佬们。

如何用在一个字符串中换行?

    @Testpublic void substring() {String string = "{\"text\":\"New pictures from Ironman Hawaii and XTerra Maui             online!\\nPictures from Ironman Hawaii are online!\\nThe SuperSeal Triathlon (1.5K ocean swim, 40K bike, 10K run) took place on Coronado Island, just off the coast of San Diego, California yesterday morning. The race featured a cold ocean swim, an exposed and windy bike course, followed by a soft sand and pavement run route.\",\"timestamp\":\"2019-04-20T02:21:16Z\",\"url\":\"http://michiweiss.at/stories-pid386\"}";String s = StringUtils.substringBetween(string, "{\"text\":\"", "\",\"timestamp\"");String aaa = s.replaceAll("\\\\n", "\n");System.out.println(s);System.out.println(aaa);}

常用正则表达式

首先,博主一开始也是迷惑是不是正则表达式在c++、Java、python中都是相似的呢?

各位往下看,其实是不然的。

正则表达式定义了字符串的模式。

正则表达式可以用来搜索、编辑或处理文本。

正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。

在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。

在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

所以,在其他的语言中(如 Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\

字符

说明

\

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如, n匹配字符 n。\n 匹配换行符。序列 \\\\ 匹配 \\ ,\\( 匹配 (。

^

匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。

$

匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。

*

零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。

+

一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。

?

零次或一次匹配前面的字符或子表达式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效于 {0,1}。

{n}

n 是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。

{n,}

n 是非负整数。至少匹配 n 次。例如,"o{2,}"不匹配"Bob"中的"o",而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"。"o{0,}"等效于"o*"。

{n,m}

mn 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。

?

当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是"非贪心的"。"非贪心的"模式匹配搜索到的、尽可能短的字符串,而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串。例如,在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"。

.

匹配除"\r\n"之外的任何单个字符。若要匹配包括"\r\n"在内的任意字符,请使用诸如"[\s\S]"之类的模式。

(pattern)

匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果"匹配"集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用"\("或者"\)"。

(?:pattern)

匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。

(?=pattern)

执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

(?!pattern)

执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配"Windows 3.1"中的 "Windows",但不匹配"Windows 2000"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

x|y

匹配 xy。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

[xyz]

字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。

[^xyz]

反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]

字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。

[^a-z]

反向范围字符。匹配不在指定的范围内的任何字符。例如,"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符。

\b

匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。

\B

非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。

\cx

匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是"c"字符本身。

\d

数字字符匹配。等效于 [0-9]。

\D

非数字字符匹配。等效于 [^0-9]。

\f

换页符匹配。等效于 \x0c 和 \cL。

\n

换行符匹配。等效于 \x0a 和 \cJ。

\r

匹配一个回车符。等效于 \x0d 和 \cM。

\s

匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。

\S

匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。

\t

制表符匹配。与 \x09 和 \cI 等效。

\v

垂直制表符匹配。与 \x0b 和 \cK 等效。

\w

匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。

\W

与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。

\xn

匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,"\x41"匹配"A"。"\x041"与"\x04"&"1"等效。允许在正则表达式中使用 ASCII 代码。

\num

匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,"(.)\1"匹配两个连续的相同字符。

\n

标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。

\nm

标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 n m 是八进制数字 (0-7)。

\nml

n 是八进制数 (0-3),ml 是八进制数 (0-7) 时,匹配八进制转义码 nml

\un

匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (©)。

介绍常用的用法

replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。

// 按指定模式在字符串查找String line = "This order was placed for QT3000! OK?";String pattern = "(\\D*)(\\d+)(.*)";// 创建 Pattern 对象Pattern r = Pattern.compile(pattern);// 现在创建 matcher 对象Matcher m = r.matcher(line);if (m.find( )) {System.out.println("Found value: " + m.group(0) );System.out.println("Found value: " + m.group(1) );System.out.println("Found value: " + m.group(2) );System.out.println("Found value: " + m.group(3) ); } else {System.out.println("NO MATCH");

如果感到有用,请点击关注和点赞,一起进步呀!

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

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

相关文章

有了这个标准,你就知道和你聊天的AI是什么水平了

来源&#xff1a;AI前线编辑&#xff1a;刘燕InfoQ 获悉&#xff0c;6 月 28 日&#xff0c;由清华大学计算机教授、智能技术与系统实验室副主任黄民烈发起&#xff0c;联合了十余家科研机构、二十多位知名学者共同制定的全球首个《AI 对话系统分级定义》&#xff08;以下简称《…

UCL汪军专访:从生命体决策出发,探索智能决策的安全与风险

来源&#xff1a;智源社区整理&#xff1a;沈磊贤编辑&#xff1a;李梦佳导读&#xff1a;我们的日常生活中无时无刻不涉及到决策&#xff0c;如果说感知智能是从观察到发现规律的过程&#xff0c;那么决策智能就是从规律再返回到感知世界&#xff0c;进而改变数据的过程。这样…

课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。

在校大学生的一份辛苦劳动成果写了一个小画板程序。 任务书... 1 1.1设计内容... 1 1.2设计任务及具体要求... 1 1.3软件开发运行环境.. 1 2 本组课题... 1 2.1课题... 1 2.2本人任务... 2 3 程序功能简介... 2 1.画板具体功能.. 2 2.功能分析&#xff1a;... 2 …

忆阻器取代晶体管?时间问题!

来源&#xff1a;悦智网1947年&#xff0c;贝尔实验室发明了晶体管&#xff0c;开创了一个电子设备的时代&#xff0c;电子设备比体积庞大、易碎的真空管电子设备更小、运行更冷、功耗更低。晶体管用作二进制开关&#xff0c;以促进电流从关闭状态变为开启状态。收音机、计算器…

可微硬件:AI将如何重振摩尔定律的良性循环

来源&#xff1a;OneFlow撰文&#xff1a;吕坚平本文阐述了当今AI硬件渊源&#xff0c;跳脱过去芯片设计窠臼&#xff0c;以可微分GPU及可微分ISP为例&#xff0c;提倡以AI为本的可微分硬件理念。希望借此可重振软硬件彼此加持的雄风&#xff0c;缓解甚至逆转摩尔定律的衰退。据…

2nm就靠它了!ASML加速研发新一代光刻机:更贵、更强

来源&#xff1a;万物智能视界用于生产 2nm 芯片的 ASML 新款光刻机预计在 2025 年首次投入使用&#xff0c;对芯片厂商而言&#xff0c;“2nm 工艺战”已经打响。ASML 冲刺 0.55 NA EUV 光刻机对于芯片厂商而言&#xff0c;要想发展先进制程&#xff0c;光刻机是关键设备。而从…

中国机器人产业图谱(2022)

来源&#xff1a;阿里云加速器与行行查研究中心编辑&#xff1a;蒲蒲当前中国机器人产业呈现良好发展势头&#xff0c;产业规模快速增长&#xff0c;“十三五”以来年均复合增长率约为15%&#xff1b;产业格局不断优化&#xff0c;以智能制造、智慧服务为使命与愿景的机器人企业…

全球十大半导体企业,美国独占七席

来源&#xff1a;芯师爷想要了解半导体行业&#xff0c;就永远绕不开一个国家&#xff1a;美国。作为半导体的重要发源地&#xff0c;美国成功确立了芯片市场的“老大”地位。根据IC Insights的芯片市场研究报告&#xff0c;2021年美国企业占据了全球芯市场总销售额的54%&#…

【前沿技术】AI终于攻陷了数学领域!高数考试超过普通博士??

来源&#xff1a;智能研究院高数考不好&#xff0c;不知道是多少人的噩梦。如果说你高数考得还不如AI好&#xff0c;是不是就更难以接受了&#xff1f;没错&#xff0c;来自OpenAI的Codex已经在MIT的7门高数课程题目中正确率达到81.1%&#xff0c;妥妥的MIT本科生水平。课程范围…

中科院院士:几乎没有任何研究课题会完全按照预期发展;如果有,这种研究不会有任何突破、不会给人带来任何惊喜...

来源&#xff1a;科学网作者&#xff1a;Philip Ball&#xff08;《国家科学评论》特约作者&#xff09;2001年&#xff0c;唐本忠团队偶然观察到了这一有悖常理的光物理现象&#xff0c;从而在发光材料研究领域取得了重大原创突破。2016年&#xff0c;Nature将AIE点&#xff0…

工业人工智能系统框架、关键技术、典型应用与发展趋势

来源&#xff1a;原文刊载于《机床与液压》2022年5月 作者&#xff1a;唐露新 张儒锋 姜德志 林建文 周书兴近年来&#xff0c;智能制造是很多工业发达国家积极推进和重点发展的领域&#xff0c;美国、欧洲和日本等都将目光转向人工智能等核心技术&#xff0c;并不断取得新的突…

MIT Technology Review 2022年“全球十大突破性技术”解读

来源&#xff1a;中国科学基金自2001年起&#xff0c;MIT Technology Review每年都会评选出年度“全球十大突破性技术”&#xff0c;不少在当年崭露头角的技术&#xff0c;如今已经深刻地改变了我们的生活&#xff0c;推动了人类社会的进步。2022年2月23日&#xff0c;MIT Tech…

长文综述:大脑中的熵、自由能、对称性和动力学

来源&#xff1a;集智俱乐部作者&#xff1a;Viktor Jirsa, Hiba Sheheitli译者&#xff1a;JawDrin审校&#xff1a;彭菘峻 编辑&#xff1a;邓一雪 导语我们的大脑在一定程度上是贝叶斯推理系统&#xff0c;生成内部模型对外部世界作出预测&#xff0c;然后将预测与感官输入不…

统计学和机器学习到底有什么区别?

来源&#xff1a;不止数据分析统计学和机器学习之间的界定一直很模糊。无论是业界还是学界一直认为机器学习只是统计学披了一层光鲜的外衣。而机器学习支撑的人工智能也被称为“统计学的外延”。例如&#xff0c;诺奖得主托马斯萨金特曾经说过人工智能其实就是统计学&#xff0…

人工智能领域开展标准化研究

https://mp.weixin.qq.com/s/-9npN3ByCDLzaDZINRr57A中共中央国务院&#xff1a;在人工智能领域开展标准化研究

谷歌2022学术指标出炉!Nature继续霸榜,CVPR第4,计算机5顶会入Top20

来源&#xff1a;公众号&#xff1a;【新智元】作者&#xff1a;新智元谷歌最新学术指标出炉&#xff01;今年&#xff0c;AI顶会黑马迭出&#xff0c;CVPR仍保持总榜第4&#xff0c;ICLR和NeurIPS排名继续跃升。值得一提的是&#xff0c;ICCV、ICML直接挤进前20。一年一度的谷…

2021-10-28嵌入式人工智能

嵌入式人工智能----最热门的人工智能商业化技术之一 “嵌入式人工智能是当前最热门的人工智能商业化技术之一。所谓嵌入式人工智能&#xff0c;就是设备无须通过云端数据中心进行大规模计算&#xff0c;而是在本地、不联网的情况下就可以做到实时环境感知、人机交互、决策控制…

《自然》揭示:发生意外时,大脑中发生了什么?

来源&#xff1a;学术经纬▎药明康德内容团队编辑 当你需要你关注一些重要的事情时&#xff0c;你的大脑会发生什么&#xff1f;最近&#xff0c;一项发表于《自然》的研究告诉我们一项全新的答案&#xff1a;大脑会释放一股去甲肾上腺素。研究团队发现&#xff0c;去甲肾上腺…

基于嵌入式图像处理平台的实时多目标识别算法

基于嵌入式图像处理平台的实时多目标识别算法 人工智能技术与咨询 昨天 本文来自《科学技术与工程》&#xff0c;作者 王旭辉等 摘 要 提出了一种适用于空间观测任务的实时多目标识别算法&#xff0c;它基于DSP和FPGA组合的图像处理硬件平台&#xff0c;运用散点聚类、轨迹跟…

针对深度学习的“失忆症”,科学家提出基于相似性加权交错学习

来源&#xff1a;AI科技评论作者&#xff1a;Rajat Saxena et al.编译&#xff1a;bluemin编辑&#xff1a;陈彩娴与人类不同&#xff0c;人工神经网络在学习新事物时会迅速遗忘先前学到的信息&#xff0c;必须通过新旧信息的交错来重新训练&#xff1b;但是&#xff0c;交错全…