Регулярное выражение для проверки наличия строки между специальными символами в java - PullRequest
1 голос
/ 06 августа 2020

Я должен проверить, имеет ли предоставленная строка определенный формат c. Формат следующий: «Это просто #<example string> только для проверки. Эта строка должна быть этой #<specific format>».

Если вы посмотрите на строку, в ней есть специальные символы #<> с некоторой строкой между #< и >. Я пробовал использовать регулярное выражение: Pattern.compile("^[#<a-zA-Z0-9>]*$").matcher(string).find(), но оно возвращает истину, даже если я не указываю специальные символы в начале или в конце.

Я тоже пробовал с условием if: if(string.matcher("#<")) но я думаю, что этот подход неубедителен. Я бы предпочел go с обычным экспрессом.

Что я здесь делаю не так?

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Чтобы сопоставить одно или несколько слов с использованием символов a-zA-Z0-9 между #<...> и границей пробелов слева и справа, вы можете использовать

(?<!\S)#<[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*>(?!\S)

In Java

String regex = "(?<!\\S)#<[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*>(?!\\S)";

Демо Regex

1 голос
/ 06 августа 2020

Попробуйте: Pattern.compile("#<(.*?)>")

Предложите вам использовать веб-сайт, например https://regex101.com/, чтобы помочь вам их создать.

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