在对文本关键信息进行提取的过程中,通常需要使用正则表达式匹配。
这篇笔记整理汇总 Python 中可能用到的与数值相关的正则表达式。
正则表达式基础
正则表达式是用字符串表示的一种语法,用于描述一种字符串匹配的模式。 正则表达式中大多数字符的含义是通用的,比如符号 ^ 和 $ 在绝大多数语言的正则表达式中都表示行头和行尾;但也可能在某些语法上存在差异,这需要依据特定语言而定。
Python 的正则表达式匹配
在 Python 语言中,通常使用 re 模块完成正则表达式的匹配。 使用 re.match 函数尝试从字符串的起始位置匹配一个模式,而 re.search 扫描整个字符串并返回第一个成功的匹配。 比如使用 re.match 方法:
>>> import re
>>> print(re.match(‘abc’, ‘abcd’))
>>> print(re.match(‘abc’, ‘babcd’))
None
比如使用 re.search 方法:
>>> import re
>>> print(re.search(‘abc’, ‘abcd’))
>>> print(re.search(‘abc’, ‘babcd’))
使用 re.compile 函数可以编译一个正则表达式,生成正则表达式对象,后续使用 match() 和 search() 方法:
>>> pattern = re.compile(r’abcde*’)
>>> print(pattern.search(‘babcd’))
>>> print(pattern.match(‘babcd’))
None
可以看出,match 和 search 方法的主要差别,还是在于是否要求输入字符串从开始字符起就匹配正则表达式描述的字符串模式。 具体详细参数使用可以参考 官方文档。
Python 匹配数值
在一段文本查找一个纯数字匹配,可以使用这样的正则表达式:
>>> pattern = re.compile(r’\d+’)
>>> pattern.search(‘abcd32sfs’)
不过现实场景中,数值可能并不是纯数字的形式呈现,往往可能包含了符号、小数点、指数等。关于符号
对于正负号,对于强制或可选的情况可以使用 [-+] 或 [-+]? 表示。普通数字
可以使用 [0-9] 或 \d 表示,两者是等价的。小数点
由于符号 . 在正则表达式中是关键符号有特殊含义,表示小数点需要使用转义字符 \.。指数
通常科学计数法的指数形式会使用 [eE][-+]?[0-9]+ 表示,因为符号 e 或 E 后必须跟着至少一个数字才有意义。
实例
综上所述,通过上述几个部分的组合,能够拼出满足特定要求的正则表达式。案例1
强制小数点的浮点数,小数点前必须有数值(不能是 .56)。
^[-+]?[0-9]+\.[0-9]+$案例2
强制小数点的浮点数,小数点前可以无数值(可以是 .56)。
^[-+]?[0-9]*\.[0-9]+$案例3
小数点可选,但如果存在后面一定要有数值。
^[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)$案例4
小数点可选,如果前面有整数对后面不做要求,如果前面没有整数后面一定要有数值。
^[-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+)$案例5
小数点可选,如果前面有整数对后面不做要求,如果前面没有整数后面一定要有数值,可选的指数部分。
^[-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+)([eE][-+]?[0-9]+)?$
总结
笔记简单整理了 Python 使用正则表达式的方式以及常用的数值匹配正则表达值,可供查阅。
参考链接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181999.html原文链接:https://javaforall.cn