我应该在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

回到顶部