掌握正则表达式基础语法:构造与字符类详解

0 下载量 186 浏览量 更新于2024-09-06 收藏 79KB PDF 举报
正则表达式是一种强大的文本处理工具,用于在编程中搜索、替换和验证字符串模式。本文将深入解析正则表达式的语法,带你了解如何构建匹配规则。首先,我们来介绍正则表达式的构造基础。 1. **字符匹配** - **普通字符**:`x字符x`,直接匹配指定字符。 - **反斜线字符**:`\` 是转义字符,用于匹配特殊字符,如`\0` 表示八进制字符、`\x` 表示十六进制字符、`\u` 表示Unicode字符等。 - **制表符、换行符、回车符、换页符和特殊字符**:`\t`、`\n`、`\r`、`\f` 和 `\a` 分别代表制表、换行、回车、换页和警告音符,`\e` 是转义字符,`\cx` 对应特定控制字符。 2. **字符类** - **简单类**:`[abc]` 匹配字符a、b或c。 - **否定类**:`[^abc]` 匹配除a、b、c之外的任何字符。 - **范围类**:`[a-zA-Z]` 匹配字母a到z或A到Z,包含边界。 - **并集**:`[a-dm-p]` 匹配a到d或m到p中的任意一个字符。 - **交集**:`[ad-z]` 匹配d、e或f,且排除b和c。 - **减去类**:`[a-lq-z]` 匹配a到z,但不包括m到p。 3. **预定义字符类** - **通用类**:`.` 表示匹配任何单个字符,但可能不匹配行结束符。 - **数字和非数字**:`\d` 匹配数字,`\D` 匹配非数字。 - **空白字符和非空白字符**:`\s` 匹配空白字符,`\S` 匹配非空白字符。 - **单词字符和非单词字符**:`\w` 匹配字母、数字和下划线,`\W` 匹配非单词字符。 - **POSIX字符类**:`\p{Lower}` 和 `\p{Upper}` 分别表示小写和大写字母,`\p{ASCII}` 包含所有ASCII字符,`\p{Alpha}` 匹配字母,`\p{Digit}` 匹配数字,`\p{Alnum}` 包含字母和数字,`\p{Punct}` 匹配标点符号,`\p{Graph}` 匹配可见字符,`\p{Print}` 匹配可打印字符,`\p{Blank}` 匹配空格或制表符。 掌握这些基本概念后,你可以在JavaScript等编程语言中灵活运用正则表达式进行字符串操作,如查找、替换、验证输入等。通过理解这些语法细节,可以大大提高文本处理的效率和准确性。在实际开发中,根据具体需求组合和嵌套字符类,能够创建出更复杂的匹配模式。

(3) 参考利用下面的程序代码,完成代码注释中要求的两项任务。 import re """ 下面ref是2020年CVPR的最佳论文的pdf格式直接另存为文本文件后, 截取的参考文献前6篇的文本部分。 请利用该科研文献的这部分文本,利用正则表达式、字符串处理等方法, 编程实现对这6篇参考文献按下面的方式进行排序输出。 a.按参考文献标题排序 b.按出版年份排序 """ ref = """[1] Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, and Leonidas Guibas. Learning representations and generative models for 3D point clouds. In Proc. ICML, 2018 [2] Pulkit Agrawal, Joao Carreira, and Jitendra Malik. Learning to see by moving. In Proc. ICCV, 2015 [3] Peter N. Belhumeur, David J. Kriegman, and Alan L. Yuille. The bas-relief ambiguity. IJCV, 1999 [4] Christoph Bregler, Aaron Hertzmann, and Henning Biermann. Recovering non-rigid 3D shape from image streams. In Proc. CVPR, 2000 [5] Angel X. Chang, Thomas Funkhouser, Leonidas Guibas. Shapenet: An information-rich 3d model reposi-tory. arXiv preprint arXiv:1512.03012, 2015 [6] Ching-Hang Chen, Ambrish Tyagi, Amit Agrawal, Dy-lan Drover, Rohith MV, Stefan Stojanov, and James M. Rehg. Unsupervised 3d pose estimation with geometric self-supervision. In Proc. CVPR, 2019""" ref_str = re.sub(r'\[([0-9]{1})\]', r'$[\1]', ref) # 添加分隔$ print(ref_str) #脚手架代码 ref_str_2 = re.sub(r'([a-zA-Z]{2})\.', r'\1.#', ref_str) # 添加分隔# print(ref_str_2) #脚手架代码 ref_str2 = ref_str_2.replace("\n", "") ref_list = ref_str2.split("$") print(ref_list) #脚手架代码 [提示: 排序可以采用内置函数sorted(),语法如下: sorted(iterable, /, *, key=None, reverse=False), 注意掌握形式参数中带“/”和“*”的用途]

2023-05-26 上传