Конкретный вопрос о регулярном выражении, связанном с отрицательным просмотром фиксированной ширины. ⇐ JAVA
Конкретный вопрос о регулярном выражении, связанном с отрицательным просмотром фиксированной ширины.
Я пишу регулярное выражение (для использования в Java, если это важно), которое пытается сопоставить число (может быть с плавающей запятой) после $ (допускает интервал между $ и числом), но только если слово, предшествующее ему, не является словом LOST.
Если возможных совпадений несколько, должно быть возвращено первое число.
Для простоты предположим, что все символы написаны заглавными буквами.
Например, в следующем предложении: «Я ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» будет соответствовать 10,12. Для предложения «Я ПОТЕРЯЛ $11,34 В ИГРЕ» совпадений не будет. Для фразы «Я ПОТЕРЯЛ 11,34 ДОЛЛАРА В ИГРЕ И ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» все равно будет сопоставлено значение 10,12.
Я придумал регулярное выражение:
.*?(?[0-9]*[.]?[0-9]*).* Мое регулярное выражение обычно работает нормально, хотя мне интересно, есть ли более простой способ его написания/не упускаю ли я какой-либо угловой случай. Одна небольшая проблема заключается в том, что если между LOST и $ имеется более 1 пробела, я все равно не хочу сопоставлять, но в настоящее время мое регулярное выражение будет совпадать. К сожалению, негативный просмотр назад должен иметь фиксированную ширину.
Я пишу регулярное выражение (для использования в Java, если это важно), которое пытается сопоставить число (может быть с плавающей запятой) после $ (допускает интервал между $ и числом), но только если слово, предшествующее ему, не является словом LOST.
Если возможных совпадений несколько, должно быть возвращено первое число.
Для простоты предположим, что все символы написаны заглавными буквами.
Например, в следующем предложении: «Я ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» будет соответствовать 10,12. Для предложения «Я ПОТЕРЯЛ $11,34 В ИГРЕ» совпадений не будет. Для фразы «Я ПОТЕРЯЛ 11,34 ДОЛЛАРА В ИГРЕ И ЗАПЛАТИЛ 10,12 ДОЛЛАРА ЗА ПИВО» все равно будет сопоставлено значение 10,12.
Я придумал регулярное выражение:
.*?(?[0-9]*[.]?[0-9]*).* Мое регулярное выражение обычно работает нормально, хотя мне интересно, есть ли более простой способ его написания/не упускаю ли я какой-либо угловой случай. Одна небольшая проблема заключается в том, что если между LOST и $ имеется более 1 пробела, я все равно не хочу сопоставлять, но в настоящее время мое регулярное выражение будет совпадать. К сожалению, негативный просмотр назад должен иметь фиксированную ширину.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Могу ли я поместить утверждение в класс символов в регулярном выражении?
Anonymous » » в форуме JAVA - 0 Ответы
- 58 Просмотры
-
Последнее сообщение Anonymous
-