Как я могу исправить этот отрицательный взгляд за регулярное выражение?

Хочу только захватить 136.50 В следующих

   $136.50 (was $195.00)

Я пытаюсь использовать отрицательный взгляд сзади, чтобы не группировать цену, если ей предшествует другая цена. Вот что у меня есть:

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

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: Я думаю, что проблема может быть в том, что я не могу использовать строку переменной длины внутри поиска, но я не уверен, как построить регулярное выражение без такового.

РЕДАКТИРОВАТЬ: иногда будет только одна цена, и в этом случае я хочу сгруппировать эту цену. Вот почему я не использовал положительный прогноз, чтобы подтвердить, что цена - это первая цена.

3 ответа

Решение

Не используйте отрицательный прогноз, просто возьмите первую цену (в первой группе и, возможно, во второй группе, если есть дроби). Может быть как то так?

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

Хорошо, так что я думаю, что вы также должны взять первую цену:

это должно соответствовать всем ценам, в т.ч. Кома в тысячах, как этот от Owlstead/^.*?\$(\d{1,3}(?:,\d{3})*(?:\.\d+)?).*$/

Вы можете использовать что-то вроде этого

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

Это будет соответствовать первой группе, а не той же группе

Другие вопросы по тегам