Допустим, у меня есть строка "\"Боб\",\"1\",\"Мэри\",\"2\"". Можно ли убрать только кавычки вокруг цифр, а не буквы? Я пробовал смотреть вперед/назад, но непеременная длина для просмотра назад меня облажала, и я понятия не имею, как решить проблему. Спасибо.
Regex удаляет кавычки вокруг целых чисел?
Ответы (1)
в php:
<?php
$in = "\"Bob\",\"1\",\"Mary\",\"2\"";
$out = preg_replace('/"(\d)"/',"$1",$in);
echo $out;
?>
в джаваскрипте:
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 - это индекс. Проще говоря, регулярное выражение заменяет все вхождения цифры, заключенной в кавычки, только этой цифрой.