Я использовал regex101 для создания своего выражения, и это выглядит так, используя их символы
\d+ [+-/*] \d*
По сути, я хочу, чтобы пользователь вводил как 123 + 123, но весь оператор представляет собой одну строку с ровно одним пробелом после первого числа и одним пробелом после оператора.
Приведенное выше выражение работает, но оно не преобразует его в Java.
Я думал, что эти символы универсальны, но, похоже, нет. Любые идеи, как преобразовать это в правильный синтаксис?
"123 + 123".matches("^\\d+ [+-\/*] \\d*$") правда. Похоже, ваш класс персонажа должен быть [-+/*], чтобы - не интерпретировался как диапазон, но кроме этого, в чем конкретно заключается проблема, которую вы видите? Можете ли вы добавить код и примеры данных или ошибок?




Регулярные выражения не универсальны. В основном, нет двух одинаковых систем регулярных выражений.
В Java нет регулярных выражений.
Некоторые классы Java поддерживают регулярные выражения.
Класс Шаблон определяет регулярные выражения, которые используются некоторыми классами Java, включая Matcher, который, вероятно, является классом, который вы используете.
Как уже было указано в комментариях,
\ — это символ перехода к следующему символу в Java.
Если вы хотите представить \ в строке,
вы должны использовать \\.
Например,
\d в регулярном выражении должно быть записано \\d в строке Java.
Вы можете просто использовать группы () и создать регулярное выражение по своему усмотрению. Это регулярное выражение может быть одним из способов сделать это:
((\d+\s)(\+|\-)(\s\d+))
Он имеет четыре группы, и вы можете просто вызвать весь ввод с помощью $1:
Вы также можете избежать \ тех обязательных языковых символы.
\\d+ [+-\/*] \\d*\ нужно экранировать в java...