gpt4 book ai didi

regex - 用 N 个字符替换行首的 N 个空格

转载 作者:行者123 更新时间:2023-12-05 09:28:46 25 4
gpt4 key购买 nike

我正在寻找一个正则表达式替换,以将一行开头的 N 个空格转换为 N 个  。所以这段文字:

list:
- first

应该变成:

list:
  - first

我试过:

str = "list:\n  - first"
str.gsub(/(?<=^) */, "&nbsp;")

返回:

list:
&nbsp;- first

缺少一个 。如何改进替换以获得所需的输出?

最佳答案

您可以使用 \G anchor\K 重置报告匹配的起点。

要匹配所有前导的单个空格:

(?:\R\K|\G) 
  • (?: 非捕获组
    • \R\K 匹配一个换行符并清除匹配缓冲区
    • | 或者
    • \G 断言上一场比赛结束时的位置
  • ) 关闭非捕获组并匹配一个空格

查看 regex demo和一个 Ruby demo .


仅匹配示例字符串中的单个前导空格:

(?:^.*:\R|\G)\K 

在部分中,模式匹配:

  • (?: 非捕获组
    • ^.*:\R 匹配以 : 结尾的行并匹配换行符
    • | 或者
    • \G 断言位置在上一个匹配的末尾,或者在字符串的开头
  • ) 关闭非捕获组
  • \K 忘记到目前为止匹配的是什么,匹配一个空格

查看 regex demo和一个 Ruby demo .

例子

re = /(?:^.*:\R|\G)\K /
str = 'list:
- first'
result = str.gsub(re, '&nbsp;')

puts result

输出

list:
&nbsp;&nbsp;- first

关于regex - 用 N 个字符替换行首的 N 个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71137587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com