Не волнуйтесь, я не прошу вас помочь мне найти регулярное выражение!
В настоящее время я использую метод
String.replaceAll(String regex, String replacement)
для анализа строки пользователя.предоставьте данные и получите имя пользователя.Я делаю это, убирая строку всего, кроме данных, которые мне нужны, и затем возвращая эти данные.
Давайте представим, что
String rawTextInput = "Machine# 000111
Password: omg333444"
Я хочу, чтобы имя пользователя было номером машины.Мой метод:
private String getUsername(String rawTextInput) {
String username = rawTextInput.replaceAll("(.+#\\s\\d{6,6})", "(\\d{6,6})");
return username;
}
Первый аргумент, регулярное выражение (. + # \ S \ d {6,6}) правильно идентифицирует первую строку необработанного ввода, Машина № 000111 .
Второй аргумент / регулярное выражение (\ d {6,6}) правильно изолирует нужные мне данные, 000111 .
Как правило,что этот метод говорит программе: «Найдите строку с Machine # 000111 и обрезайте эту строку до 000111 .
Фактический вывод
Однако я, очевидно, неправильно использую второй аргумент ReplaceAll (), потому что возвращаю буквальное регулярное выражение
username = "(\\d{6,6})"
Ожидаемый результат
вместо
username = "omg333444"
Как правильно получить здесь имя пользователя? Есть ли способ имитировать наличие регулярного выражения в аргументе Replace ReplaceAll ()?
Обратите внимание, что блоки кода в этом примере содержат повторяющиеся символы "\", поскольку они являются escape-символами в IntelliJ IDEA.