Как я могу исправить этот отрицательный взгляд за регулярное выражение?
Хочу только захватить 136.50
В следующих
$136.50 (was $195.00)
Я пытаюсь использовать отрицательный взгляд сзади, чтобы не группировать цену, если ей предшествует другая цена. Вот что у меня есть:
(?<!\$.+)\$(?<price>[\d.,]+)
Что я делаю неправильно?
РЕДАКТИРОВАТЬ: Я думаю, что проблема может быть в том, что я не могу использовать строку переменной длины внутри поиска, но я не уверен, как построить регулярное выражение без такового.
РЕДАКТИРОВАТЬ: иногда будет только одна цена, и в этом случае я хочу сгруппировать эту цену. Вот почему я не использовал положительный прогноз, чтобы подтвердить, что цена - это первая цена.
3 ответа
Не используйте отрицательный прогноз, просто возьмите первую цену (в первой группе и, возможно, во второй группе, если есть дроби). Может быть как то так?
/^.*?\$([\d,]+)(\.\d\d)?/
Хорошо, так что я думаю, что вы также должны взять первую цену:
это должно соответствовать всем ценам, в т.ч. Кома в тысячах, как этот от Owlstead/^.*?\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?).*$/
Вы можете использовать что-то вроде этого
/(\$\d*.\d*)(?!.\1)/
Это будет соответствовать первой группе, а не той же группе