我应该在preg_match_all()中使用哪种模式来提取此字符串中的数量?
想在下面的字符串来提取量:我应该在preg_match_all()中使用哪种模式来提取此字符串中的数量?
£5000 per Night - 1 bedroom - Serviced Apartment
如何做到这一点用预浸匹配所有的任何想法?
我使用这个模式:
preg_match_all("|£(\d)|U",$string,$matches);
但只取5,而不是5000
如果它是£15,000可以用逗号来提取呢?
THX帮助,
斯特凡
回答:
使用\d+
而不是\d
。否则,它只会匹配一个数字。 +
的意思是'一个或多个'。
preg_match_all("|£(\d+)|U",$string,$matches);
(有关重复的正则表达式是如何工作的详细信息,请this page。)
的表达式,它允许逗号为好,并确保它们不奇怪的斑点(如,500
):
preg_match_all("|£(\d+(?:,\d+)*)|U",$string,$matches);
回答:
你已经错过了递归preg_match_all('|£(\d+)|U', $string, $matches)
(注意 '+' 后\d
)
更新,以反映价格
逗号如果你匹配用逗号或句号价格,正则表达式看起来像|£([\d,\.]+)|
- 作为一个基本的例子。 [ ... ]
方括号允许您匹配一个或多个字符,而不仅仅是一种类型的字符 - 所以在这种情况下,它可以是任何数字,逗号或句点。 [0-9,\.]+
也会起作用(因为它是正则表达式中的特殊“任何字符”匹配,所以您需要避开这段时间)。
回答:
使用+
匹配的\d
preg_match_all("|£(\d+)|U",$string,$matches);
以上是 我应该在preg_match_all()中使用哪种模式来提取此字符串中的数量? 的全部内容, 来源链接: utcz.com/qa/261085.html