首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于匹配不同html标记内的权重(lbs)的正则表达式

用于匹配不同html标记内的权重(lbs)的正则表达式
EN

Stack Overflow用户
提问于 2013-11-23 01:18:04
回答 2查看 355关注 0票数 1

我有一个HTML文件,其中包含产品信息,包括它们的重量。我正在尝试获取权重(lbs之前的任何数字)。有时,磅和权重数字之间会有空格。我想出了正则表达式:preg_match(">[0-9]+(\.[0-9][0-9]?)(.*?)lbs/i",fgets($file),$matches);,但它返回第一个'>‘和'lbs’之间的所有内容,这是不实用的,因为涉及到很多标签。所以我要做的是只获取紧跟在权重之前的字符'>‘和紧跟在权重之后的字符'lbs’之间的数字,而忽略了它们之间的空格。

所以在下面的例子中,我希望得到0.94,0.12,0.94。任何帮助都是非常感谢的。

代码语言:javascript
复制
<td width="513" valign="top">0.94 lbs
<td width="513" valign="top">0.12lbs
<td width="513" valign="top">0.94LBS
<td width="513" valign="top">penguin lover

请注意,标记“<td width="513" valign="top">”位于除权重之外的其他字符之前。

任何想法,帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-11-23 01:27:20

使用:

代码语言:javascript
复制
/(?<=>)[0-9]+(?:\.[0-9][0-9]?)(?=\s*lbs)/i

这使用了前视和后视,这样唯一匹配的就是十进制数。

说明:

(?<=>) look用于检查> -- (?<=xxx)表示向后查找xxx

使用非捕获组(?:xxx) [0-9]+(?:\.[0-9][0-9]?)您未更改的小数正则表达式

(?=\s*lbs)预视0-后跟lbs的多个空格字符

请注意,如果需要,您可以将每个[0-9]替换为\d,它们是等效的。

示例代码:

代码语言:javascript
复制
$str = '<td width="513" valign="top">0.94 lbs
        <td width="513" valign="top">0.12lbs
        <td width="513" valign="top">0.94LBS
        <td width="513" valign="top">penguin lover';

preg_match_all("/(?<=>)[0-9]+(?:\.[0-9][0-9]?)(?=\s*lbs)/i",$str,$matches);

print_r($matches[0]);

输出:

代码语言:javascript
复制
 Array ( [0] => 0.94 [1] => 0.12 [2] => 0.94 )
票数 1
EN

Stack Overflow用户

发布于 2013-11-23 01:40:00

代码语言:javascript
复制
preg_match_all('/[0-9]+(?:\.[0-9]+)(?=\s*lbs)/i', $html, $matches);
print_r($matches[0]);

正则表达式:

代码语言:javascript
复制
[0-9]+         any character of: '0' to '9' (1 or more times)
(?:            group, but do not capture (optional)
  \.           '.' 
  [0-9]+       any character of: '0' to '9' (1 or more times)
)              end of grouping
 (?=           look ahead to see if there is:
  \s*          whitespace (\n, \r, \t, \f, and " ") (0 or more times)
  lbs          'lbs'
)              end of look-ahead

请参阅working demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20150730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档