Регулярное выражение, которое проверяет все сценарии - PullRequest
0 голосов
/ 05 марта 2019

Я нахожусь в процессе написания регулярного выражения в Java, которое соответствует приведенным ниже материалам и не соответствует недопустимым строкам. Я не могу правильно отфильтровать его, чтобы он совпадал только с действительным списком и не совпадал с недействительным.

вот мое регулярное выражение - (?!\!)([\(\)XSAa\\\#\+\-\s\.\!])+)

допустимые строки -

"A \\ # A \\ # A \\ #", "+ \ # \ # \ #", "(\\ # \\ # \\ #) \\ # \\ # \\ # - \\#\\#\\#\\#","\#\#\#.\#\#\#.\#\#\#\#","!\#\#","ИКС- \ # \ # \ # \ # "," \ # \ # \ # \ # \ # - SSSS "," Aaaaa !! "`

Здесь он не соответствует !\\#\\#, поскольку я заявил, что он не должен содержать!

Неверные данные - !A!\\#!A!\\#!A!\\#, !X, A#A#A#, !a!a!a!a!a

но, к сожалению, оно соответствует A#A#A#, что является сценарием сбоя.

Может кто-нибудь помочь мне с этим?

1 Ответ

1 голос
/ 05 марта 2019

В конце этого комментария есть непревзойденные круглые скобки, но в остальном это просто отрицательный прогноз (поэтому он не начинается с "!"), За которым следует любое количество символов в классе символов. Они включают в себя «A» и «#», поэтому любые последовательности этих символов будут приняты. Я не знаю, что вы действительно хотите сопоставить, но это объяснение, почему A # A # A # делает.

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