代码之家  ›  专栏  ›  技术社区  ›  PatS

匹配行后替换字符串

  •  1
  • PatS  · 技术社区  · 8 年前

    我希望找到正则表达式典型问题的答案。

    • 查找给定行
    • 在那条线上做些改变

    许多关于如何使用RegEx replace的例子假设您知道要替换的模式。非常适合教学,但不典型(IMO)。看到了吗 w3 schools 和 MDN

    在我的最新问题中,我有一个html文件,它在一行上有uniq id,所以我可以执行这个简单的替换。我需要修改的行的语法如下所示。我可以在文件中放置一个唯一的字符串,以便找到要更新的正确行。

    <span id="lastModified">2018-10-26</span>
    <span id="builtBy">Pat</span>
    

    我要找到那条线 id="lastModified" 更改日期。

    我要找到那条线 id="builtBy"

    我试过几种不同的方法。一个是

    var res = str.replace(/id="lastModified".*>(.*)<.span>/, newDate );
    

    我认为默认情况可能是更改paren中匹配的数据(不,这样不行)。看到了吗 JSFiddle code example

    注意:在我的例子中,我试图弄清楚这一点,因为对于使用gulp replace的简单字符串替换来说,这实际上是一个javascript模式匹配和替换问题,所以除了提到它之外,我不会将gulp replace引入这个问题。

    注意:在我的例子中,这段代码没有在浏览器中执行,因此典型的DOM操作将不起作用。

    我发现的其他问题(但没有回答我的问题)是:

    1 回复  |  直到 8 年前
        1
  •  1
  •   Poul Bak    8 年前

    可以使用此正则表达式匹配第一行:

    /(<span id="lastModified">)(.*?)(</span>)/
    

    它基本上匹配文本并将其分成三组,然后在替换模式中使用,可以是:

    $12018-10-26$3
    

    首先用 $1 $3 这是端跨。