正则表达式的替换

时间:2011-03-12 09:21:07

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

我有一个清单:

1  name1
2  name2
3  name3

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

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

3 个答案:

答案 0 :(得分:2)

这是一个JavaScript解决方案:

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

答案 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

答案 2 :(得分:1)

在PHP中有一点片段:

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

它使用$ 1和$ 2来引用你在字符串<'p>中'捕获'的圆括号