Как получить подстроку с помощью регулярного выражения?
Привет. Пытаюсь обработать строку-ответ от сервера вконтакте. Получаю записи со стены. Как можно обрабатывать в нем упоминания пользователей? Вся запись выглядит например так: "gewgweg ewwegoih #ihogewig #oihgeirgih [durov|iojfeirjfwe]". От [ и до ] упоминание. Мне надо сделать так, чтобы заменить подстроку от [ до ] на "все что внутри после |" (vk.com/все, что до |" (без кавычек). Как это можно сделать? Сейчас я делаю так in = in.replaceAll("\\[(.*?)\\]", "упоминание");
упоминание заменяется. Но это не совсем то, что мне нужно.
MiiNiPaa , спасибо, всё получилось! А вот ещё такой вопрос: как я могу получить в отдельную переменную содержание того, что до символа | ? То есть при [smb|тыц тыц] мне надо получить String со значнием "smb". Я пробовал засунуть то, что сверху в Matcheer и взять group(1), но не получилось.
MiiNiPaa: спасибо. И последний: как в первом случае указать, что надо искать не .*? (все символы), а только если в ней нет символов отличных от A-Za-z0-9 нижнего подчеркваиня, точки? То есть если написано что-то вроде [ewgwe?!!!**|gewg] - такое трогать не надо. Я попробовал "\\w*?_\\." , но не получилось
Используйте классы:
[\w.] означает: символ который либо относится к \w (a-zA-Z0-9_) либо точка.
Вам возможно придётся добавить А-Яа-я и, возможно, пробелы к описанию. Хотя в описании как раз могут быть любые символы... В общем: https://regex101.com/r/lH8jR8/3 fiddle.re/3bncv6