1

我有一个清单:

1  name1
2  name2
3  name3

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

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

4

3 回答 3

2

这是一个 JavaScript 解决方案:

str = str.replace(/(\w+)/g, "'$1'");
于 2011-03-12T09:33:46.153 回答
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 )

于 2011-03-12T10:39:22.873 回答
1

这是PHP中的一个小片段:

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

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

于 2011-03-12T09:32:48.663 回答