【发布时间】:2019-09-13 07:11:03
【问题描述】:
我是正则表达式的初学者,所以如果这是一个幼稚的问题,我提前道歉!
我有一个用逗号分隔的两个值的字符串:12.345678,23.45678901
我正在尝试使用正则表达式(这是一项要求)来返回第一个带有 3 个小数的值 12.345 和第二个带有 2 个小数的值 23.45。
理想情况下,完整的正则表达式匹配是12.345,23.45
我可以使用以下正则表达式获得第一个值 12.345:^\d+\.\d{0,3}。
这很有效,因为它只返回完整匹配(没有第 1 组匹配)。但是我很困惑如何让第二个值 23.45 在同一个字符串中返回。
我也试过这个正则表达式:
(^.{0,6})(?:.*)(,)(.{0,5}),它正确解析了第一个和第二个值,但返回的完整匹配项带有太多小数。
完整匹配:12.345678,23.45
第一组:12.345
第 2 组:,
第 3 组:23.45
欢迎提出任何建议!先感谢您。
【问题讨论】:
-
你试过explode()吗?
-
正如 Hemant 所提到的,我觉得将字符串按
,拆分,然后根据您的格式输出数据将产生可读和可维护的代码。 -
不幸的是不能爆炸()。我可以将正则表达式添加为配置,但我无法更新 php 代码本身。