Разрабатываю бота для ВК, нужно убирать обращение из команды к нему из сообщения если оно есть. Обращение может быть по имени бота или ID, а так же через запятую и без.
Сделал на regex101.com такую регулярку:
(i?)(бот|@botid|\\*botid)|(,{1})
На сайте всё обращение стиралось прекрасно, оставалась только команда и всё, что идет после нее, но в Java такое уже не работает: просто не находит совпадений.
private static final Pattern PATTERN = Pattern.compile("(i?)(бот|@botid|\\*botid)|(,{1})", Pattern.CASE_INSENSITIVE);
public static void main(String[] args) {
String cmd = "бот, тест";
Matcher matcher = PATTERN.matcher(cmd);
if (matcher.matches()) {
cmd = cmd.substring(matcher.start(), matcher.end());
System.out.println(cmd);
} else {
System.out.println("не найдено совпадений");
}
}