【问题标题】:Preg Match not matchPreg Match 不匹配
【发布时间】:2018-02-22 00:44:35
【问题描述】:

我有一个字符串,我想只取匹配的单词,它只包含整数值而不是浮点数或字符。

例子:

2.0 Test map
2.0 Your Word 150
2.0 Your 150  Word 

从第一个字符串开始,第二个字符串得到 150

我正在使用/\b([0-9])\b/i 但不工作

【问题讨论】:

  • 我建议匹配和跳过浮点数,只匹配其他数字块:preg_match_all('~\d*\.\d+(?:e[-+]?\d+)?(*SKIP)(*F)|\d+~i', $s, $matches),见demo
  • 您可以使用环视:(?<=\s|^)\d+(?=\s|$)

标签: php regex preg-replace preg-match preg-match-all


【解决方案1】:

您还需要忽略.,因为您不想要浮点数:尝试以下表达式

/(?<![\d.])[0-9]+(?![\d.])/

【讨论】:

  • (?&lt;![\d.])[0-9]+(?![\d.]) 将匹配 345 中的 1.23+e345。当然,这对 OP 来说可能不是问题,仅供参考。
猜你喜欢
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多