Правильно используя Regex в Java, Regex не соответствует - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу проверить, содержит ли строка ровно 1 буквенный символ, которому может предшествовать любой из ~,! или же ?. Выражение, с которым я сопоставляю:

if (this.str.matches("[!~?]{1,9}?[a-z]{1}")) {

но когда вход, который я имею (this.str), равен 'p', это если блок не сработал. Что я делаю не так?

Некоторые строки, которые должны соответствовать:

!!~?p
p
~p
???!!?!??!~p

Спасибо, куча:)

1 Ответ

0 голосов
/ 09 ноября 2018

Я думаю, вам нужно [!~?]{0,9}?[a-z]. Проблема была в {1,9} совпадениях ~,! Или? ОДИН до девяти раз. Вы заявляете, что это необязательно и, следовательно, должно быть от нуля до девяти раз.

Попробуйте свои регулярные выражения в https://regex101.com/r/m1ad8X/1.

Попробуйте @ WiktorStribiżew исправление на https://regex101.com/r/m1ad8X/2

И мое решение на https://regex101.com/r/m1ad8X/3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...