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

时间:2018-12-01 23:14:34

标签: regex newline spaces

是否可以用换行符替换字符序列(在此示例中为\ s〜\ s),并且还可以使用一个正则表达式删除开头和结尾的空格?行数必须灵活。

输入:

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

所需的输出:

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

# replace
$2\n

到目前为止,它可以正常工作了,问题是我的结果在最后一行的末尾仍然有空格:

我当前的正则表达式搜索和替换(https://regexr.com/444au):

std::shuffle

1 个答案:

答案 0 :(得分:1)

一种选择是在\s~\s\s+$之间交替,从而匹配结尾处的尾部空格:

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

替换为

$1\n

https://regexr.com/4452l

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