Конкретный вопрос о регулярном выражении, связанном с отрицательным просмотром фиксированной ширины.JAVA

Программисты JAVA общаются здесь
Гость
Конкретный вопрос о регулярном выражении, связанном с отрицательным просмотром фиксированной ширины.

Сообщение Гость »


Я пишу регулярное выражение (для использования в Java, если это важно), которое пытается сопоставить число (может быть с плавающей запятой) после $ (допускает интервал между $ и числом), но только если слово, предшествующее ему, не является словом LOST.

Если возможных совпадений несколько, должно быть возвращено первое число.

Для простоты предположим, что все символы написаны заглавными буквами.

Например, в следующем предложении: «Я ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» будет соответствовать 10,12. Для предложения «Я ПОТЕРЯЛ $11,34 В ИГРЕ» совпадений не будет. Для фразы «Я ПОТЕРЯЛ 11,34 ДОЛЛАРА В ИГРЕ И ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» все равно будет сопоставлено значение 10,12.

Я придумал регулярное выражение:

.*?(?[0-9]*[.]?[0-9]*).* Мое регулярное выражение обычно работает нормально, хотя мне интересно, есть ли более простой способ его написания/не упускаю ли я какой-либо угловой случай. Одна небольшая проблема заключается в том, что если между LOST и $ имеется более 1 пробела, я все равно не хочу сопоставлять, но в настоящее время мое регулярное выражение будет совпадать. К сожалению, негативный просмотр назад должен иметь фиксированную ширину.

Вернуться в «JAVA»