如何利用PHP 正则表达式从字符串中取整数
发布时间:2025-05-19 18:03:37 发布人:远客网络
一、如何利用PHP 正则表达式从字符串中取整数
preg_match_all--进行全局正则表达式匹配说明 int preg_match_all( string pattern, string subject, array matches [, int flags])在 subject中搜索所有与 pattern给出的正则表达式匹配的内容并将结果以 flags指定的顺序放到 matches中。搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。 flags可以是下列标记的组合(注意把 PREG_PATTERN_ORDER和 PREG_SET_ORDER合起来用没有意义): PREG_PATTERN_ORDER对结果排序使$matches[0]为全部模式匹配的数组,$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。<?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U","<b>example:</b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER); print$out[0][0].",".$out[0][1]."\n"; print$out[1][0].",".$out[1][1]."\n";?>
出自:
preg_match_all("|\d+|U",$str,$out, PREG_PATTERN_ORDER);
最后的匹配结果在$out[0]这个数组中
二、正则表达式 任意数字,包括零、小数、负数、负小数
匹配含正整数,负整数,0,负小数,正小树,0.00等多种情况的正则表达式如下
-?(0|[1-9]\d*)(\.\d+)?
#匹配负号,问好表示负号是可选的,可正可负
#匹配整数位不为0的情况,首位不能为0
#匹配小数部分,问号表示小数部分是可选的
只能输入(正整数或正小数)的正则表达式如下
(0|[1-9]\d*)(\.\d+)?
如果需要排除0和0.00(正数),可以这样写
(?=.*[^0.])(0|[1-9]\d*)(\.\d+)?
三、正则表达式提取整数和小数
当你需要从文本中提取整数和小数时,一个通用的正则表达式可以同时搞定。以下是一个实例,展示了如何使用正则表达式来完成这项任务:
在提供的代码中,我们首先定义了一个包含整数和小数的字符串。然后,我们使用正则表达式r"\d+(\.\d+)?"来搜索并匹配这些数值。
"\d+"匹配一连串的数字,"+"表示一个或多个。"\."是一个特殊字符,需要转义,用来匹配小数点。"\d*"表示零个或多个数字,"?"则表示前面的部分是可选的。这样,它既可以匹配整数(比如100),也能匹配小数(如3.14)。
通过调用re.findall()函数,我们可以从字符串中找出所有符合正则表达式的数字部分,并以列表的形式返回。