正则表达式如何匹配除首行外的每个行首?

发布于 2022-09-01 06:45:26 字数 563 浏览 13 评论 0

/^/gm匹配每个行首,但怎么排除第一行的行首呢?


问题没有描述清楚,我补充下:
假定有字符串

    <div>
    <ul>
        <li></li>
        <li></li>
    </ul>
</div>

想通过正则实现每一行前面加上空格,除了第一行,变成下面的样子:

    <div>
        <ul>
            <li></li>
            <li></li>
        </ul>
    </div>

我目前已经实现的方式是:

replace(/^/gm/, "    ").replace("    ", "")

个人感觉很不优雅,需要两步replace,想需求看看是否一步到位的解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如梦初醒的夏天 2022-09-08 06:45:26

排除第一行的行首

(?!^)

图片描述

星星的轨迹 2022-09-08 06:45:26

得看是哪个正则表达式流派
js?js不支持后向查找 不支持(?<=),以下可能不是最佳方法
/(\n^)/m 注意参数m是多行模式,匹配结果是位置(0占位)

javascript测试案例
a='11\n'+'22\n'+'33\n'
------------------------------
"11
22
33
"
--------------------------------
a.match(/(\n^)/m).length
-------------------------------
2
a.match(/(?:\n^)(.+)/gm)
["
22", "
33"]
冷心人i 2022-09-08 06:45:26

没弄出来...XD,等大神来吧...我只会这两种了

str.replace(/(.*)/g, " $&").replace(/\s*/, "");

str.replace(/(.*)/g, function(index){
  if (index == 1) {
    return "
amp;";
  } else {
    return " 
amp;";
  }
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文