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

Можно ли заменить последовательность символов новой строкой (\ s ~ \ s в этом примере), а также удалить пробелы в начале и в конце одним регулярным выражением?Количество строк должно быть гибким.

Ввод:

    foo = 1 ~ bar = 2 ~ baz = 3 ~ ...     <- also spaces at the end

Требуемый вывод:

foo = 1
bar = 2
baz = 3
... <- no spaces here

Пока все работает, проблема в том, что мой результатвсе еще есть пробелы в конце последней строки:

Мой текущий поиск по регулярному выражению и замена (https://regexr.com/444au):

# search 
/(\s*)([^~\s]{1}.*?)(\s~\s)(?=.*)(\s*)/g

# replace
$2\n

1 Ответ

0 голосов
/ 02 декабря 2018

Один из вариантов - чередовать \s~\s и \s+$, тем самым соответствует завершающим пробелам в самом конце:

\s*([^~\s].*?)(?:\s~\s+|\s+$)

заменить на

$1\n

https://regexr.com/4452l

Обратите внимание, что поскольку единственная группа, которая вам действительно нужна, это группа с [^~\s]{1}.*?, вы можете удалить все остальные группы захвата.{1} - бессмысленный квантификатор, так что вы можете удалить его, и (?=.*) ничего не сделает - любая позиция в строке будет , за которой последует ноль или более символов, независимо от этого, поэтому не стесняйтесь убрать это упреждение.

...