我如何修复这个负面的后瞻性正则表达式?

时间:2012-10-26 18:17:04

标签: php regex actionscript

我想在以下

中仅捕获136.50
   $136.50 (was $195.00)

我正在尝试使用负面的后观,以便在价格之前没有分组价格。这就是我所拥有的:

(?<!\$.+)\$(?<price>[\d.,]+)

我做错了什么?

编辑:我认为问题可能是我不能在一个环视中使用可变长度的字符串,但我不确定如何在没有它的情况下构造正则表达式。

编辑:有时候只有一个价格,在这种情况下我想把这个价格分组。这就是为什么我没有使用积极的前瞻来确认价格是第一个价格。

3 个答案:

答案 0 :(得分:3)

不要使用负面后卫,只需取第一个价格(在第一组中,如果有分数则可能是第二组)。这样的事可能吗?

/^.*?\$([\d,]+)(\.\d\d)?/

答案 1 :(得分:0)

好的,所以我认为你也应该拿第一个价格:

这应该匹配所有价格,包括。成千上万的koma,就像来自owlstead的这个 /^.*?\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?).*$/

答案 2 :(得分:0)

你可以使用这样的东西

/(\$\d*.\d*)(?!.\1)/

这将匹配第一组,而不是相同的组