【问题标题】:Replacement in regular expression正则表达式中的替换
【发布时间】:2011-07-13 23:48:50
【问题描述】:

我有一个清单:

1  name1
2  name2
3  name3

我需要将所有 1,2,3... 替换为 '1', '2', '3'...并将 name1, name2, name3 替换为 'name1', 'name', 'name'3 . 我知道如何通过'\n'和'\s'来做到这一点。

但我认为存在更好的方法。有人知道这种方式吗?

【问题讨论】:

  • 我希望你的意思是to 'name1', 'name2', 'name3',否则我无法理解逻辑......
  • 所以主要目的是将这个列表转换为数组。数组('1' => 'name1', '2' => 'name2', '3' => 'name3')。我想通过 netbeans 或其他可以使用正则表达式的编辑器来完成。

标签: regex replace preg-replace expression regular-language


【解决方案1】:

这是一个 JavaScript 解决方案:

str = str.replace(/(\w+)/g, "'$1'");

【讨论】:

    【解决方案2】:

    你可以用 perl 轻松完成,

    在 unix 机器上,从终端:

    perl -pe 's/regex/replace/' input > output
    

    (> 输出是可选的,它只会打印到终端)

    所以:

    perl -pe "s/([0-9]+)\s(.*)/'\1' '\2'/g" file > file2
    

    这将在开头找到至少一个数字,并将其捕获(如 \1)。然后是一些空白,然后是该行的其余部分(如 \2)。 / 之后是替换位。只需添加 ' 并插入捕获的位。

    (如果你在 Windows 上,你可以在这里获取 perl:http://www.perl.org/get.html#more

    【讨论】:

      【解决方案3】:

      这是 PHP 中的一个小 sn-p:

      $str = "1 name1\n2 name2\n3 name3";
      $str2 = preg_replace('!([^\s]+)\s([^\n]+)!sm', "'$1' '$2'", $str);
      echo $str2;
      

      它使用 $1 和 $2 来引用您在字符串中“捕获”的圆括号

      【讨论】:

      • 抱歉,您在这里使用了一些语言。如果您只有没有js和php等的编辑器,它就不起作用。当然我可以创建php或js脚本然后进行替换。同时,仅在编辑器中执行此操作很有趣。
      • 您没有提到您想在编辑器中执行此操作。在编辑器的 find&replace 中试试这个(或者更简单的 JS)。如果它基于 PCRE,它应该可以工作..
      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2021-04-03
      • 1970-01-01
      相关资源
      最近更新 更多