文字列"\"Bob \ "、\" 1 \ "、\" Mary \ "、\"2\""があるとします。文字ではなく、数字の周りの引用符のみを削除することは可能ですか?先読み/後読みを試しましたが、後読みの長さが可変ではないため、問題を解決する方法がわかりません。ありがとう。
1 に答える
PHPで:
<?php
$in = "\"Bob\",\"1\",\"Mary\",\"2\"";
$out = preg_replace('/"(\d)"/',"$1",$in);
echo $out;
?>
javascriptで:
var $in = "\"Bob\",\"1\",\"Mary\",\"2\"";
var $out = $in.replace(/"(\d)"/g,"$1");
alert($out);
Rでの私の最善の推測:(私はRプログラマーではありません)
in <- "\"Bob\",\"1\",\"Mary\",\"2\""
out <- sub("\"([:digit:])\"","\\1",in)
print(out)
...ここ\\1
はと同等で$1
あり、[:digit:]
と同等です\d
正規表現を説明する
phppreg_replace()
関数は、正規表現を文字列形式の最初のパラメーターとして、置換値を文字列形式の2番目のパラメーターとして、ソースを文字列形式の3番目のパラメーターとして受け取り、変更された文字列を返します。正規表現の置換が行われた後。
javascript.replace()
メソッドはソース文字列を操作し、最初のパラメーターとして正規表現を取り、2番目のパラメーターとして置換文字列を取ります。正規表現の置換後に変更された文字列を返します。
この例では、正規表現はスラッシュ()で区切られ(開始および終了)、角かっこ()で囲まれ、引用符( )で囲まれた/.../
任意の数字()と一致します。javascriptでは、フラグを使用して置換をグローバルにします(すべての発生に対して繰り返します)。キャプチャされた数字(角かっこで囲まれているためキャプチャされた)は、最初にキャプチャされたグループを意味する置換で参照されます。一致した文字列全体に一致します。2番目にキャプチャされたグループと一致しますが、この正規表現には何もありません。正規表現の括弧内に含まれるものはすべてキャプチャされたグループであり、置換で参照することができます。\d
"(\d)"
"(\d)"
g
$1
$0
$2
$n
ここで、nはインデックスです。つまり、簡単に言うと、正規表現は、引用符で囲まれた数字のすべての出現箇所を数字だけに置き換えます。