Regex захватить числа после знака доллара

1

У меня есть динамические строки, которые иногда будут иметь в них цену, а иногда и нет. Его для craigslist, так что на самом деле нет установленного формата, могут быть запятые, тире и т.д. Вот несколько примеров типичной строки:

Xbox 360 (черный) Elite Console 120GB (Mason City Illinois) $ 200

$ 200 2013 North Trail Camper (RT 202. Манчестер, Мэн) $ 224/мес.

Прицепы для снегоходов (Winthrop/Augusta) $ 40 Ежемесячно

"Великий рождественский подарок" XBox 360 Guitar Hero (Springfied) $ 80

Я пытаюсь разделить строку на заголовок, местоположение и цену. Я могу захватить место:

Pattern p = Pattern.compile("\(([^]*)\)");
Matcher m = p.matcher(title);

Не удалось выяснить, как отделить название и цену. Любая помощь будет оценена по достоинству.

  • 1
    "\\$(\\d+)" или "\\$(\\d+(\\.\\d+)?)" - это начало, а затем захватите matcher.group(1) для числа, но ожидайте изрядное количество отладки, чтобы получить такую вещь правильно. Люди слишком непредсказуемы: /
Теги:

2 ответа

2
Лучший ответ

Чтобы захватить число после $ use: \$[0-9]+ regex.

  • 0
    немного больше объяснений поможет
  • 0
    @Cyzanfar, \ $ соответствует символу $ буквально [0-9] + соответствует одному символу, присутствующему в списке под квантификатором: + От одного до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости [жадность] 0-9 один символ в диапазоне от 0 до 9
0

Лично я бы использовал:

 \$[-0-9.,]+[-0-9.,a-zA-Z]*\b

Это займет немало не-чисел, но оно также будет расти, как отрицательные значения, $1,000 $1mil, $1mil и так далее. \b в конце будет гарантировать, что он максимально приближается к пространству или новой строке или чему-то еще.

  • 1
    Я попытался поместить это в gskinner.com/RegExr, но не смог заставить его работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню