【问题标题】:Regex get only numeric values from string正则表达式仅从字符串中获取数值
【发布时间】:2013-04-06 06:42:33
【问题描述】:

我想从下面的字符串中获取 116.8381.16。我尝试了 \d,但它也从 up2dn2 中选择了 2。我怎么能忽略这个。

<td align="right">
    116.83<span class="up2"></span><br>81.16<span class="dn2"></span>
</td>

【问题讨论】:

  • 数字前后允许有哪些字符?
  • 如果要解析 HTML,不要使用正则表达式,使用 DOM 解析器。
  • 什么语言?为什么不使用合适的解析器?
  • 该值超出 span 标签。我该如何解析数据。
  • 在javascript DOM API中,即nodes = [].filter.call(elem.childNodes, function(x){return x.nodeType==3})

标签: regex vb.net


【解决方案1】:
\b[\d.]+\b

\b 匹配单词和非单词字符之间的边界,但不包括匹配中的相邻字符。由于字母和数字都是单词字符,所以p2之间不匹配,所以up2不匹配。但是&gt; 是一个非单词字符,所以它匹配&gt;8,因此正则表达式匹配81.16

【讨论】:

  • 这是我想要的。非常感谢你。能不能也解释一下。我已经接受/投票了你的答案。
  • 我确实解释过了。你不明白哪一部分?
  • @Barmar - 你的意思是逃避这个时期吗? \b[\d\.]+\b
  • @Aiias 不,句号在[]内部没有特殊含义,所以不需要转义。
【解决方案2】:

试试这样的:

[>\s]+([\d\.]+)[<\s]+

但请务必从第一级匹配中去除前导 &gt; 和空格以及尾随 &lt; 和空格,或者只获取第二级匹配。

【讨论】:

  • 您应该使用捕获组 1 中的值,它获取括号中的内容。
  • @Aiias 感谢您的回复。
猜你喜欢
  • 2011-06-15
  • 2021-09-19
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2016-08-13
  • 2014-04-24
相关资源
最近更新 更多