Regex удалить кавычки вокруг целых чисел? - PullRequest
1 голос
/ 19 июля 2011

Допустим, у меня есть строка "\" Bob \ ", \" 1 \ ", \" Mary \ ", \" 2 \ "". Можно ли удалить только кавычки вокруг цифр, а не буквы? Я пробовал смотреть вперед / назад, но не изменяющаяся длина для просмотра меня обескуражила, и я понятия не имею, как решить проблему. Спасибо.

1 Ответ

8 голосов
/ 19 июля 2011

в 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

для объяснения регулярного выражения

php preg_replace() функция принимает регулярное выражение в качестве первого параметра в форме строки, значение замены в качестве второго параметра в форме строки и источник в качестве третьего параметра в форме строки. и возвращает измененную строку после замены регулярного выражения.

javascript .replace() метод работает с исходной строкой, принимает регулярное выражение в качестве первого параметра и замещающую строку в качестве второго параметра. Возвращает измененную строку после замены регулярного выражения.

В этом примере регулярное выражение отделяется (начинается и заканчивается) косыми чертами (/.../) и соответствует любой цифре (\d), взятой в скобки ("(\d)") и заключенной в кавычки ("(\d)"). В javascript флаг g используется, чтобы сделать замены глобальными (повторить для всех вхождений). Захваченная цифра (захваченная, потому что она заключена в скобки) затем заменяется ссылкой $1, означающей первую захваченную группу. $0 соответствует всей совпадающей строке. $2 будет соответствовать второй захваченной группе - но в этом регулярном выражении нет ни одного. Все, что содержится в скобках в регулярном выражении, является захваченной группой, и на нее можно ссылаться при замене по ее индексу через $n, где n - это индекс. Проще говоря, регулярное выражение заменяет все вхождения цифры, заключенной в кавычки, только цифрой.

...