как использовать символ $ в качестве символа конца строки в [] определении набора?

Вопрос:

pattern1 делает, что я хочу. Он разбивает текст, разделенный точкой. Я попытался использовать pattern для той же цели, но $ кажется, представляет $, а не конец ввода. любые предложения, чтобы заставить его работать?

    String pattern1 = "(\\w+)(?:\\.|$)";
String pattern = "(\\w+)[\\.$]";
Pattern regex = Pattern.compile(pattern);
Matcher matcher = regex.matcher("name.surname.value1.value");
while (matcher.find()) {
System.out.println(matcher.group(1));
}

Лучший ответ:

$ представляется как литерал при использовании в классе символов.

Невозможно использовать его для представления конца строки/строки в символьном классе.

Используйте его в группе, как вы использовали в своем первом шаблоне

Ответ №1

Я попытался использовать шаблон для той же цели, но $, кажется, представляет $, а не конец ввода.

Потому что вы использовали $ inside [] как член класса символов регулярных выражений. Следовательно, он теряет свое значение как привязку конца строки и начинает буквально подбираться.

Также обратите внимание, что если вы пытаетесь сопоставить предложения, заканчивающиеся точкой; использование \w только не поможет, поскольку оно не охватывает пробелы.

Ответ №2

«» является метасимволом, который будет соответствовать любому символу, кроме новой строки.

Проверьте эту ссылку для получения дополнительной информации (раздел 1.3).

Оцените статью
TechArks.Ru
Добавить комментарий