Регулярное выражение для замены группы - PullRequest
0 голосов
/ 22 октября 2018

Я хочу заменить пробел перед цифрами некоторыми символами, но я не смог сделать это с помощью следующего регулярного выражения:

    String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
    String myregex = "/(\\s)[1-9]+./";
    String output = parentString.replaceAll(myregex, "$1ppp");
    System.out.println(output);

Пожалуйста, помогите мне решить регулярное выражение.

ОБНОВЛЕНИЕ

После реализации предложения @CertainPerformant и @Wiktor мой код выглядит так:

String myregex = "(\\s)[1-9]+.";
String output = parentString.replaceAll(myregex, "\n");

Я хочу, чтобы вывод был похож на

1.skdhhfsdl
2. hkjkj
3.234hbn,m

Но я сейчас получаю

1.skdhhfsdl
 hkjkj
234hbn,m

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Вы должны использовать регулярное выражение

\s+([1-9]+\.)

Обратите внимание, что вместо этого я захватил числовую часть.Когда вы заменяете, вы обычно захватываете часть, которую хотите сохранить.Также обратите внимание, что я удалил начальные и конечные слэши, так как они не нужны в Java.. также следует экранировать, как я сделал здесь.

Замена - \n$1, что означает «новая строка, затем группа 1».

String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
String myregex = "\\s+([1-9]+\\.)";
String output = parentString.replaceAll(myregex, "\n$1");
System.out.println(output);
0 голосов
/ 22 октября 2018

Чтобы получить ожидаемый результат, вы можете использовать это регулярное выражение.

public static void main(String[] args) throws Exception {
    String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
    String myregex = "\\s+(?=[1-9]+\\.)";
    String output = parentString.trim().replaceAll(myregex, "\n");
    System.out.println(output);
}

Это соответствует только одному или нескольким пробелам, за которыми следуют число и точка, и заменяет только пробел (из-за предпросмотра) с новой строкой.parentString.trim () гарантирует, что вы не получите символ новой строки перед первой строкой.

Вывод:

1.skdhhfsdl
2. hkjkj
3.234hbn,m
0 голосов
/ 22 октября 2018

Как насчет:

String myregex = "\\s([1-9]+\\.)";
String output = parentString.replaceAll(myregex, "\n$1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...