我有一个清单:
1 name1
2 name2
3 name3
我需要将所有 1,2,3... 替换为 '1', '2', '3'...并将 name1, name2, name3 替换为 'name1', 'name', 'name'3。我知道如何通过'\n'和'\s'来做到这一点。
但我认为存在更好的方法。有人知道这种方式吗?
我有一个清单:
1 name1
2 name2
3 name3
我需要将所有 1,2,3... 替换为 '1', '2', '3'...并将 name1, name2, name3 替换为 'name1', 'name', 'name'3。我知道如何通过'\n'和'\s'来做到这一点。
但我认为存在更好的方法。有人知道这种方式吗?
这是一个 JavaScript 解决方案:
str = str.replace(/(\w+)/g, "'$1'");
你可以用 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 )
这是PHP中的一个小片段:
$str = "1 name1\n2 name2\n3 name3";
$str2 = preg_replace('!([^\s]+)\s([^\n]+)!sm', "'$1' '$2'", $str);
echo $str2;
它使用 $1 和 $2 来引用您在字符串中“捕获”的圆括号