用于删除空格并替换换行符的正则表达式

Regular expression to remove spaces and replace newline separators

是否可以用换行符(本例中为\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
\n

一个选项是在 \s~\s\s+$ 之间交替,从而 匹配 最后的尾随空格:

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

替换为

\n

https://regexr.com/4452l

请注意,由于您真正关心的唯一组是具有 [^~\s]{1}.*? 的组,因此您可以删除所有其他捕获组。 {1} 是一个无意义的量词,所以你也可以删除它,并且 (?=.*) 不会做任何事情 - 字符串中的任何位置 无论如何, 后面都会跟着 零个或更多 个字符,因此请随意删除前瞻。