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

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

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

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

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

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

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

0

Решение

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

regex mixedFraction("(-?[0-9]*)\\s([0-9]*)/([1-9][0-9]*)")
1

Другие решения

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

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

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

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

0

По вопросам рекламы [email protected]