Я новичок в RegEx, работаю в Visual Studio (C ++) и мне нужно проверить, является ли ввод допустимой смешанной дробью.
Пока что у меня работает для всех случаев, за исключением того, что я хочу убедиться, что знаменатель не может быть 0 (например, 2 3/0).
Вот RegEx, которым я сейчас пользуюсь:
regex mixedFraction("(-?[[:digit:]]+)[\\s]([[:digit:]]+)[/]([[:digit:]]+)")
Я пробовал варианты, но не могу понять, что работает. По сути, мне действительно нужно, чтобы он проверял, что только первая цифра знаменателя не равна 0 — будет хорошо, если он не пройдет проверку, если кто-то введет «2 3/01»
Спасибо за любую помощь
Это должно работать для вас.
regex mixedFraction("(-?[0-9]*)\\s([0-9]*)/([1-9][0-9]*)")
Я ничего не знаю о C ++ или его реализации регулярных выражений, поэтому синтаксис может быть немного:
\d+\s\d+/[^0]
это будет соответствовать смешанным фракциям, где знаменатель не равен нулю
я не использую эти глупые :digit:
штуковина так \d
будет достаточно