Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2015, 12:38
Профессор
Отправить личное сообщение для Гробовщик Посмотреть профиль Найти все сообщения от Гробовщик
 
Регистрация: 10.03.2013
Сообщений: 169

Составить регулярное выражение
Здравствуйте уважаемые форумчане.
К сожалению мой мозг ну никак не может (или не хочет) понять логику.
Короче есть у меня в файле .csv столбец с данными типа
Код:
02.04 - созвон
07.04 - встреча
08.04 - созвон
14.04 - созвон
16.04 - созвон
17.04 - встреча
20.04 - созвон
21.04 - созвон
24.04 - созвон
Разумеется читается эта запись одной строкой
Вроде всё просто 2 цифры, точка, 2 цифры, пробел, тире, пробел и буквы, но сложность в том, что:
Цифры могут идти через запятую или тире
После них может идти точка
Разумеется не факт что после и перед тире стоит запятая
Да и вместо "созвон" может быть слово "совбон" или "созвон с поставщиком"
Мне же всю эту конструкцию надо разбить на "дата - событие"
Дата только формата "24.04" а после тире слово "созвон" или "встреча"
Может у кого есть дельный совет по этому поводу, как привести к одному формату да ещё и "разбить" на разные строки
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2015, 14:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Гробовщик,
Выложите все возможные Варианты для одной строчки:
02.04 - созвон
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2015, 14:50
Профессор
Отправить личное сообщение для Гробовщик Посмотреть профиль Найти все сообщения от Гробовщик
 
Регистрация: 10.03.2013
Сообщений: 169

Deff, ну файлик писался для понимания человеком, а потому писался "кто во что горазд". Вот варианты, которые впринципе можно отловить программно
02.04 созвон
07,04 - встреча
08-04 - созвон
14.04.15 - созвон в 3 часа
Ну и разнообразие, где то тире отсутствует, где то пробелы. Всё не соберёшь. Мне необходимо отловить как можно больше вариантов, что бы потеря данных была как можно меньше.
в целом мне и надо то отловить число и событие к нему, потом добавить в базу
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2015, 15:13
Аспирант
Посмотреть профиль Найти все сообщения от tysonfury2015
 
Регистрация: 22.07.2015
Сообщений: 68

>>Да и вместо "созвон" может быть слово "совбон"
это, по-моему, алгоритмически-неразрешимо.

остальное как-то так.
alert(
"02.04. - созвон\n02-01-встреча\n02,04 - созвон, fuck\n02-04 - fuck встреча"
 .match(/(\d\d[.,-]\d\d)\.? ?- ?([^\n]+)/g)
 .map(function(s){return s.replace(/^(\d\d)[.,-](\d\d)/, "$1.$2")})
 .map(function(s){return s.replace(/^(\d\d\.\d\d)(\.? ?- ?)(.+)/, function(s, sub1, sub2, sub3){
   return sub1+"-"+sub3.match(/созвон|встреча/)[0]
  })})

)

Если описание дано верно, должно работать

PS
Цитата:
14.04.15 - созвон в 3 часа
Этого вроде, не было, в изначальном варианте. Подозреваю, что Вы не указали еще тыщенку-другую. При таком раскладе, Вашу задачу решить невозможно, если вы сами не знаете, что хотите.

Последний раз редактировалось tysonfury2015, 22.07.2015 в 15:33.
Ответить с цитированием
  #5 (permalink)  
Старый 22.07.2015, 15:24
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сначала все нормализуется, проверяется, потом хавается как обычно. В порядке ремонта. В рабочем порядке таких задач не может возникать. Или это делают не рабочие, а какие-то недоумки.
Ответить с цитированием
  #6 (permalink)  
Старый 22.07.2015, 15:26
Аспирант
Посмотреть профиль Найти все сообщения от tysonfury2015
 
Регистрация: 22.07.2015
Сообщений: 68

kostyanet,
Такая задача может возникнуть при парсинге данных с левых сайтов, для аналитики.
Ответить с цитированием
  #7 (permalink)  
Старый 22.07.2015, 15:31
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Еще раз, тырить контент это не задачи и там реги вообще не нужны. Реги нужны именно под задачи, но если толком разобраться - тоже не нужны, ибо надо менять условия задачи, чтобы таких дебильных задач не возникало.

Чсв откуда берется? Из екзеля. А екзель откуда береся? От отсутствия акцесса, а отсутствие акцесса откуда? Оттуда что ниасилили. Следовательно видите как далека ретроспектива проблематики. Но решать ее все равно придется. Или что, до морковкиного заговения будем регами парсить екзели?
Ответить с цитированием
  #8 (permalink)  
Старый 22.07.2015, 15:35
Аспирант
Посмотреть профиль Найти все сообщения от tysonfury2015
 
Регистрация: 22.07.2015
Сообщений: 68

Сообщение от kostyanet
Из екзеля. А екзель откуда береся? От отсутствия акцесса, а отсутствие акцесса откуда? Оттуда что ниасилили.
Ты секретаршей по-совместительству работаешь?
Ответить с цитированием
  #9 (permalink)  
Старый 22.07.2015, 15:36
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Кстати, при чем тут сервер вообще? На VBA екзеля и разбирайте эту колонку.
Ответить с цитированием
  #10 (permalink)  
Старый 22.07.2015, 15:37
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от tysonfury2015
Ты секретаршей по-совместительству работаешь?
Ага, по совместительству.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение для числа с плавающей точкой boomrest Общие вопросы Javascript 4 25.02.2015 11:17
Помогите составить регулярное выражение yura29 Общие вопросы Javascript 3 08.06.2014 00:35
Помогите, пожалуйста, составить регулярное выражение sbudyakov Общие вопросы Javascript 5 07.08.2013 22:51
Составить регулярное выражение для гугла alerzo Events/DOM/Window 1 18.02.2013 16:55
Помогите составить регулярное выражение Ucorp Общие вопросы Javascript 1 17.10.2012 16:28