Заменить комбинацию символов с помощью регулярных выражений Java - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть несколько наборов строковых данных, в которых я хотел бы заменить определенную комбинацию символов с помощью замены регулярного выражения в Java.Я пробовал несколько шаблонов, но ни один из них не помог.Может ли кто-нибудь указать мне правильный шаблон?

Например:

привет, [cicuyuv v,] imijmijm

в этой строке я хочузамените ",[" и ",]" одним ",", где бы это ни происходило.

public class MainApp {

    public static void main(String[] args) {
        String data = "hello,[cicuyuv v,]imijmijm"
            .replaceAll("[,[\\[]]", ",");

        System.out.println(data);

    }

}

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018
System.out.println("hello,[cicuyuv v,]imijmijm".replaceAll(",(\\]|\\[)" , ","));


, matches the character , literally (case sensitive)

Capturing Group (\\]|\\[)

1st Alternative \]
\] matches the character ] literally (case sensitive)

2nd Alternative \[
\[ matches the character [ literally (case sensitive)
0 голосов
/ 05 декабря 2018

Ваш "[,[\\[]]" представляет шаблон [,[\[]], который соответствует одному символу, либо ,, либо [ (класс символов [\[] внутри другого класса символов образует класс символов union ).

Вы можете использовать

String data = "hello,[cicuyuv v,]imijmijm".replaceAll(",[\\[\\]]", ",");
System.out.println(data); // -> hello,cicuyuv v,imijmijm

См. Java демо

Здесь, ,[\[\]] являетсяшаблон регулярного выражения, соответствующий ,, а затем [ или ].Пожалуйста, будьте очень осторожны с ] и [ внутри класса символов в регулярном выражении Java: они оба должны быть экранированы (в других вариантах, и когда вы тестируете на regex101.com или других подобных сайтах, [ внутри [...] не нужно экранировать. Рекомендуется использовать сайты тестирования регулярных выражений Java, такие как RegexPlanet или Тестер регулярных выражений Java (без присоединения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...