Проверка регулярных выражений для смешанных дробей - Visual C ++ 2012

0

Я новичок в RegEx, работая в Visual Studio (C++), и мне нужно проверить, является ли вход допустимой смешанной долей.

Пока что у меня есть работы для всех случаев, за исключением того, что я хочу убедиться, что знаменатель не может быть 0 (например, 2 3/0).

Здесь RegEx, который я сейчас использую:

regex mixedFraction("(-?[[:digit:]]+)[\\s]([[:digit:]]+)[/]([[:digit:]]+)")

Я пробовал варианты, но не могу понять, что работает. В сущности, мне просто нужно проверить, что только первая цифра знаменателя не равна 0 - для него будет ошибкой провалить проверку, если кто-то должен был ввести "2 3/01",

Спасибо за любую помощь

Теги:
visual-studio-2012
fractions

2 ответа

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

Это должно сработать для вас.

regex mixedFraction("(-?[0-9]*)\\s([0-9]*)/([1-9][0-9]*)")
  • 0
    Это прекрасно работает, спасибо:]
0

я ничего не знаю о c++ или его реализации в регулярном выражении, поэтому синтаксис может немного отличаться:

\d+\s\d+/[^0]

это будет соответствовать смешанным фракциям, где знаменатель не равен нулю

я не использую эти глупые :digit: thingyamabobs, поэтому \d будет достаточно

  • 0
    Я пытался использовать вашу рекомендацию, но, похоже, она не работает. Я пробовал: [[: digit:]] + / [^ 0], который, похоже, ничего не изменил, а варианты просто потерпели неудачу или сравнили неправильно
  • 0
    это не хорошо ... это сработало для меня, но, как я уже сказал, я более чем наивен, когда дело доходит до регулярных выражений с ++, и у меня нет возможности протестировать с ++. но вы нашли свой ответ, так что все хорошо :)

Ещё вопросы

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