正则表达式详解:从基础到流派应用

需积分: 17 2 下载量 81 浏览量 更新于2024-08-17 收藏 926KB PPT 举报
"这篇文档是关于正则表达式的学习笔记,主要涵盖了POSI正则表达式流派的特性,包括BREs(基本正则表达式)和EREs(扩展正则表达式)的对比,以及正则表达式的基础语法、特性和使用技巧。文档还提到了在Java和JavaScript中的应用,并提供了参考资料和一个用于正则表达式测试的工具agrep。" 正则表达式是一种强大的文本处理工具,广泛应用于数据验证、文本搜索和替换等多个领域。在本文档中,作者首先介绍了正则表达式的基本概念,包括模式和元字符。模式是指用来描述字符串匹配规则的表达式,而元字符则是具有特殊含义的字符,它们赋予正则表达式更强大的匹配能力。 在正则表达式的特性和流派部分,文档提到了BREs(Basic Regular Expressions)和EREs(Extended Regular Expressions)。BREs和EREs之间的区别主要在于对量词、分组和反向引用的支持。例如,两者都支持点号"."、行首"^"和行尾"$"、字符类"[...]"和"[^...]",但EREs增加了"+"和"?", 以及"{min,max}"的区间量词,并允许量词作用于括号内的表达式。此外,EREs还支持反向引用,如"\1"到"\9",用于匹配与括号内相应子模式相同的文本。 文档进一步探讨了正则表达式的匹配原理,这部分可能涉及回溯、贪婪与非贪婪匹配、预查和后查等概念。匹配原理的了解对于优化正则表达式性能至关重要,尤其是在处理大量数据时。 正则表达式的使用技巧和性能改善部分,可能会涵盖如何避免回溯、合理使用量词、利用标志选项(如"i"忽略大小写,"g"全局匹配)以及预编译正则表达式等方式来提升效率。 在具体语言应用中,文档提到了Java和JavaScript。在Java中,正则表达式通过`java.util.regex`包进行操作,而在JavaScript中,使用的是内置的`RegExp`对象。两者都有相似的API,但实现细节和性能可能有所不同。 最后,文档提供了一个附录,专门介绍JavaScript中的`RegExp`对象,以及参考资料列表,供读者深入学习和实践。 总结来说,这篇文档是正则表达式初学者和进阶者的重要资料,通过它,读者可以全面了解正则表达式的基本元素、不同流派的差异,以及在实际编程环境中的应用。

sys:1: FutureWarning: In a future version of pandas all arguments of read_csv except for the argument 'filepath_or_buffer' will be keyword-only Traceback (most recent call last): File "C:/Users/Administrator/Desktop/test/11.py", line 22, in <module> posi = pd.read_csv("C:\\Users\\Administrator\\Desktop\\工作簿1.csv",'r') File "C:\Python37\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper return func(*args, **kwargs) File "C:\Python37\lib\site-packages\pandas\io\parsers\readers.py", line 586, in read_csv return _read(filepath_or_buffer, kwds) File "C:\Python37\lib\site-packages\pandas\io\parsers\readers.py", line 482, in _read parser = TextFileReader(filepath_or_buffer, **kwds) File "C:\Python37\lib\site-packages\pandas\io\parsers\readers.py", line 811, in __init__ self._engine = self._make_engine(self.engine) File "C:\Python37\lib\site-packages\pandas\io\parsers\readers.py", line 1040, in _make_engine return mapping[engine](self.f, **self.options) # type: ignore[call-arg] File "C:\Python37\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 69, in __init__ self._reader = parsers.TextReader(self.handles.handle, **kwds) File "pandas\_libs\parsers.pyx", line 542, in pandas._libs.parsers.TextReader.__cinit__ File "pandas\_libs\parsers.pyx", line 642, in pandas._libs.parsers.TextReader._get_header File "pandas\_libs\parsers.pyx", line 843, in pandas._libs.parsers.TextReader._tokenize_rows File "pandas\_libs\parsers.pyx", line 1917, in pandas._libs.parsers.raise_parser_error UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte是什么意思

2023-06-11 上传