Regex 正则表达式:插入之前、之后或之间的最佳实践?

Regex 正则表达式:插入之前、之后或之间的最佳实践?,regex,insert,Regex,Insert,问这个问题我非常紧张,因为有很多RegEx的帖子。但我也在要求最好的方法,所以我要冒这个险(如果我把工作搞砸了,我完全期待一个销售代表的成功…) 我得到了一个要重新格式化的列表。120个问题和答案(共240个标签集)。*glark*我需要做的就是将标签之间的文本作为链接,如下所示: <li>do snails make your feet itch?</li> 蜗牛会让你的脚发痒吗 必须成为 <li><a href="#n">do snails

问这个问题我非常紧张,因为有很多RegEx的帖子。但我也在要求最好的方法,所以我要冒这个险(如果我把工作搞砸了,我完全期待一个销售代表的成功…)

我得到了一个要重新格式化的列表。120个问题和答案(共240个标签集)。*glark*我需要做的就是将标签之间的文本作为链接,如下所示:

<li>do snails make your feet itch?</li>
蜗牛会让你的脚发痒吗 必须成为

<li><a href="#n">do snails make your feet itch?</a></li>`
  • `
    这不是一个JAVASCRIPT/PHP正则表达式问题。我可以将正则表达式放入IDE的搜索/替换字段中。我可能会尝试在之后用PERL进行批量替换,插入
    'n'
    变量,以便链接正确指向

    我知道你会问‘如果你可以使用PERL,为什么不使用整个shebang?’这是一个有效的问题,但我想更多地使用RegEx,因为它对这样的大列表具有强大的功能。再加上我的PERL技能充其量只是粗略的。。。除非你想把它也钉上…:嘿嘿

    如果这个问题无法回答或者在论坛的这一部分是错误的,请接受我的道歉,并为我指出正确的方向

    非常感谢

    搜寻
  • (*
  • 代替

  • 您可以分两步完成

  • 替换为
  • 或者你也可以试着聪明一点,一气呵成。下面是一个Perl语法的替换命令($1引用括号中匹配的命令)

    请参见如何从命令行运行此命令:

    echo '<li>do snails make your feet itch?</li>' | 
    perl -pe 's,<li>(.*)</li>,q{<li><a href="#} .++$n . qq{">$1</a></li>},e'
    
    <li><a href="#1">do snails make your feet itch?</a></li>
    
    echo'
  • 蜗牛会让你的脚发痒吗?
  • ' perl-pe的,
  • (.*)
  • ,q{
  • },e'

  • 你的
    n
    实际上是一个计数器,对吗?您的IDE正则表达式替换程序支持变量吗?是的。
    n
    是一个计数器。不幸的是,我的IDE不支持我所知道的替换程序中的变量。Notepadd++非常棒,所以它可能很有能力,我可能太迟钝了以至于不知道它我只是想通过一个快速的PERL脚本来运行它。Diomidus有最好的答案。我的也差不多,但如果你想试试的话,就打包在……这比我想象的要简单得多。是时候加强RegEx了!谢谢@Alex.)完美的在你和@Alex之间,我今晚会把这一切结束。非常感谢你!甚至更好。该死的!我爱这个网站上的人。鼓励我成为一名越来越好的开发人员:D+1非常好。用s///e方法比我快10分钟。
    <li><a href="#n">$1</a></li>
    
    s,<li>(.*)</li>,<li><a href="#n">$1</a></li>,
    
    s,<li>(.*)</li>,q{<li><a href="#} .++$n . qq{">$1</a></li>},e
    
    echo '<li>do snails make your feet itch?</li>' | 
    perl -pe 's,<li>(.*)</li>,q{<li><a href="#} .++$n . qq{">$1</a></li>},e'
    
    <li><a href="#1">do snails make your feet itch?</a></li>