нужно обрезать и записать только слово после двоеточия регуляркой

254
09 марта 2018, 17:03
function doPost(e) {
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Записано в гугл док";
  sendText(id,answer);
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,text,answer]);
}

таким образом записываю с телеграмма сообщение в гугл таблицу. Сообщения приходят в таком виде:

Имя: юрий

Телефон: 899999

Почта: ya@yandex.ru

Выберите количество комнат: 1-комнатная

Выберите тип отделки: С отделкой

Желаемый способ оплаты: Рассрочка

Как можно обрезать текст и записать только все что находится после двоеточия (1-комнатная), строки Выберите количество комнат. Расположение строки по счету может меняться.

C регулярными выражениями не очень дружу, по этому прошу помощи

Answer 1

Вроде бы так

$str = 'Имя: юрий
Телефон: 899999
Почта: ya@yandex.ru
Выберите количество комнат: 1-комнатная
Выберите тип отделки: С отделкой
Желаемый способ оплаты: Рассрочка';

preg_match_all('{\b\pL+:\s*(.+)\b}u', $str, $arr);
var_dump($arr[1]);

В результате работы кода получится следующая строка:

array (size=6)
  0 => 'юрий' 
  1 => '899999' 
  2 => 'ya@yandex.ru' 
  3 => '1-комнатная' 
  4 => 'С отделкой' 
  5 => 'Рассрочка' 

Далее, если нужно полученный результат преобразовать в строку, и вывести в таблице (как на вашем скрине), то нужно использовать цикл

preg_match_all('{\b\pL+:\s*(.+)\b}u', $str, $arr);
$view = '<table border="1"><tr>';
foreach ($arr[1] as $string) {
    $view .= "<td>$string</td>";
}
$view .= '</tr></table>';
echo $view;
Answer 2
$string = 'Имя: юрий
Телефон: 899999
Почта: ya@yandex.ru
Выберите количество комнат: 1-комнатная
Выберите тип отделки: С отделкой
Желаемый способ оплаты: Рассрочка';
preg_match_all('/\:\s(.*)/', $string, $matches);
echo var_dump($matches[1]);

Результат

array(6) {
  [0]=>
  string(9) "юрий"
  [1]=>
  string(7) "899999"
  [2]=>
  string(13) "ya@yandex.ru"
  [3]=>
  string(21) "1-комнатная"
  [4]=>
  string(20) "С отделкой"
  [5]=>
  string(18) "Рассрочка"
}

UPDATE

Посмотрел Google Apps Script. Оказывается там используется только RegExp.exec(). А в RegExp.exec() вы не можете получать все регулярное выражение одновременно. Вам понадобится добавить все отдельно!

function doPost(e) {
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Записано в гугл док";
  sendText(id, answer);
  var fname = /Имя: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  var phone = /Телефон: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  var email = /Почта: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  var room = /Выберите количество комнат: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  var type = /Выберите тип отделки: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  var payment = /Желаемый способ оплаты: (.+)/.exec(text)[1].replace(/(^\s*)|(\s*)$/g, '');
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(), id, name, answer, fname, phone, email, room, type, payment]);
}
READ ALSO
Как сделать вертикальный зум в amCharts?

Как сделать вертикальный зум в amCharts?

Подскажите, как в amCharts(на графике) сделать вертикальный зум, при нажатии Ctrl+scrollЕсть метод, в котором можна установить зум по-дефолту

200
Кое-что не понимаю в маленькой функции pow(x,n)

Кое-что не понимаю в маленькой функции pow(x,n)

Вот задание : Напишите функцию pow(x,n) , которая возвращает x в степени nИначе говоря, умножает x на себя n раз и возвращает результат

237
Как выделить text-box красным?

Как выделить text-box красным?

Нужно если text-box пустой или вводит неправильно значение, вывести сообщение об ошибке и выделить его краснымСообщение выводится, то что text box пустой

240
Chrome extensions storage

Chrome extensions storage

Подскажите, что я делаю не так? Или посоветуйте, как нужно делатьИмеем структуру расширения:

200