Regex игнорировать пробелы - PullRequest
       10

Regex игнорировать пробелы

0 голосов
/ 22 апреля 2020

У меня есть следующий фрагмент кода:

string.replace(",Target_String", ""));

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

Я хочу избежать такого кода, как наличие четырех различных replace методов, таких как:

string.replace(",Target_String", ""));
string.replace(", Target_String", ""));
string.replace("Target_String,", ""));
string.replace("Target_String ,", ""));

Но я не знаю, как мне достичь вышеупомянутой функциональности с помощью регулярного выражения.

Редактировать: запятую можно найти только в конце или в начале - никогда по обе стороны от target_string

Ответы [ 5 ]

3 голосов
/ 22 апреля 2020

Вы можете использовать это регулярное выражение replaceAll:

string = string.replaceAll(",?\\h*Target_String\\h*,?", "");

Демонстрация RegEx

Объяснение:

  • ,?\\h: сопоставить необязательную запятую с последующим 0 или более горизонтальными пробелами
  • Target_String: сопоставить буквенный текст Target_String
  • \\h*,?: сопоставить 0 или более горизонтальных пробелов с последующим необязательная запятая
1 голос
/ 22 апреля 2020

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

string.replaceAll(",\\s*Target_String\\s*,","");

\\s* совпадать с нулем или несколькими пробелами

, если есть только одна возможность пробела, тогда вы можете использовать ? для представления возможное вхождение символа.

    string.replaceAll(",\\s?Target_String\\s?,","");

или использование

    string.replaceAll("[, ]*Target_String[, ]*","");

[, ]*: сопоставить ноль или более вхождений , и пробела

0 голосов
/ 23 апреля 2020

Разве этого не достаточно? тогда все запятые будут установлены одинаково в строке

"Target_String,   blah , Target_String  ,Target_String ,".replaceAll( "\\h*,\\h*", "," ) );

получает: Target_String,blah,Target_String,Target_String,

0 голосов
/ 22 апреля 2020

string.replace("\\s*,?\\s*Target_String\\s*,?\\s*", ""));

0 голосов
/ 22 апреля 2020

Попробуйте: string.replace(",\\s*Target_String\\s*", ""));

Демо

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