【问题标题】:Regular expression to remove spaces and replace newline separators正则表达式删除空格并替换换行符
【发布时间】:2018-12-01 23:14:33
【问题描述】:

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

【问题讨论】:

    标签: regex newline spaces


    【解决方案1】:

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

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

    替换为

    $1\n
    

    https://regexr.com/4452l

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2011-07-01
      • 2016-04-03
      • 1970-01-01
      • 2016-07-20
      • 2019-06-21
      相关资源
      最近更新 更多