【问题标题】:get the match of a string and unknown decimal numbers获取字符串和未知十进制数的匹配
【发布时间】:2018-02-16 06:00:06
【问题描述】:

我有一个很长的数据,我想匹配并获取包含该数据的字符串和未知十进制值的特定行。

我想要的比赛是这样的:

 "totalProfitToday": 0.0

其中 0.0 是任何十进制数。有什么帮助吗?谢谢。

【问题讨论】:

  • 请向我们展示一个真实的(虽然不是太大)样本输入(或两个)。这些数据来自哪里?你真的只需要捕获小数吗?

标签: php regex


【解决方案1】:

\"\w+\:\"\s\d+\.?\d*匹配“单词”+空格+数字的所有序列,带或不带小数点

\"\w+\:\" 匹配“单词”

\s 匹配空格

\d+ 一系列数字

\.? 零或一个点

\d*零个或多个数字

【讨论】:

  • 那里\e t\oo m\uch \escaping he\re.
  • @mickmackusa T\hen \cor\r\ec\t me :-)
  • 我会给你一些时间研究。
【解决方案2】:

不确定您正在使用什么语言或您尝试过什么,但这个正则表达式断言它从行首开始,有您的字符串,然后是零个或多个数字,一个句点,以及零个或多个数字。

^"totalProfitToday": \d*\.\d*$

如果您想要 1 或更多而不是 0 或更多,请将 * 更改为 +。

这个实时的正则表达式演示站点可以帮助您创建、学习和排除正则表达式的问题。 https://regex101.com/r/au6rgb/1

一旦有了要匹配的正则表达式,就可以使用函数preg_match_all() 来获取匹配的数组。

http://php.net/manual/en/function.preg-match-all.php

$data = '"totalProfitToday": 5.5';
$pattern =  '/^"totalProfitToday": \d*\.\d*$/';

preg_match_all( $pattern, $data, $matches);

var_dump( $matches );

$matches 将包含匹配项。 - 您需要根据数据格式对结果/模式进行故障排除。

【讨论】:

  • 我正在使用 PHP。你能告诉我具体怎么做吗?我是这个正则表达式的新手。我想得到匹配的线路。
  • 已编辑以包含一些示例代码。如果您遇到困难,我会尝试并发布一个包含更多细节的新问题
  • 缺少重要的东西。这里有一个提示:“模式修饰符”另外,如果只有一行要定位,为什么要调用preg_match_all()
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 2019-07-27
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多