私はリストを持っています:
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つの番号が見つかり、それをキャプチャします(\ 1として)。次に、空白、次に行の残りの部分がキャプチャされます(\ 2として)。/の後は置換ビットです。' sを追加し、キャプチャされたビットを挿入するだけです。
(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を使用して、文字列で「キャッチ」した丸かっこを参照します