【发布时间】:2018-02-16 06:00:06
【问题描述】:
我有一个很长的数据,我想匹配并获取包含该数据的字符串和未知十进制值的特定行。
我想要的比赛是这样的:
"totalProfitToday": 0.0
其中 0.0 是任何十进制数。有什么帮助吗?谢谢。
【问题讨论】:
-
请向我们展示一个真实的(虽然不是太大)样本输入(或两个)。这些数据来自哪里?你真的只需要捕获小数吗?
我有一个很长的数据,我想匹配并获取包含该数据的字符串和未知十进制值的特定行。
我想要的比赛是这样的:
"totalProfitToday": 0.0
其中 0.0 是任何十进制数。有什么帮助吗?谢谢。
【问题讨论】:
\"\w+\:\"\s\d+\.?\d*匹配“单词”+空格+数字的所有序列,带或不带小数点
\"\w+\:\" 匹配“单词”
\s 匹配空格
\d+ 一系列数字
\.? 零或一个点
\d*零个或多个数字
【讨论】:
不确定您正在使用什么语言或您尝试过什么,但这个正则表达式断言它从行首开始,有您的字符串,然后是零个或多个数字,一个句点,以及零个或多个数字。
^"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 将包含匹配项。 - 您需要根据数据格式对结果/模式进行故障排除。
【讨论】:
preg_match_all()?