Анализ текстового файла с помощью javascript

У меня есть текстовый файл с несколькими записями, каждый с новой строкой, как показано ниже.

username ="Test1" :[Jul 01 2012]
username ="Test2" :[Jul 03 2011]
username ="Test3" :[Jul 28 2011]
username ="Test4" :[Jul 12 2010]

Как разобрать этот текст с указанным выше форматом и сохранить данные только между двумя квадратными скобками? [], поэтому результат будет выглядеть так.

Jul 01 2012
Jul 03 2011
Jul 28 2011
Jul 12 2010

Я бы хотел использовать JavaScript только для выполнения этой задачи.

Заранее благодарю за любую поддержку!

1
nl ja de
Прочитайте это регулярное выражение статьи developer.mozilla.org/en-US/ Docs/JavaScript/Руководство/& hellip;
добавлено автор Saju, источник

3 ответы

Прокрутите каждую строку и проанализируйте нужные данные. RegExes должен хорошо работать здесь.

Скажем, ваша строка находится в переменной myText :

var lines = myText.split("\n"),
    dates = [], tempVar;
for(var i = 0, len = lines.length; i < len; i++){
    tempVar = lines[i].match(/^.*:\[(\w{3} \d{2} \d{4})\]/);
    if(tempVar !== null){
        dates.push(tempVar[1]);
    }
}

DEMO: http://jsfiddle.net/Uqaj9/

3
добавлено
@BaconJuice: Добро пожаловать! Рад, что я мог бы помочь: D
добавлено автор Rocket Hazmat, источник
@BaconJuice: вы можете просто захватить все в [] вне зависимости от его формата: /^.*: \ [(. *) \]/
добавлено автор Rocket Hazmat, источник
@BaconJuice: Нет, мне не нужно ничего подобного. Я просто возьму твоего первого родителя, и мы будем ровны. :-П
добавлено автор Rocket Hazmat, источник
@BaconJuice: date - это массив. Что вы с ним делаете?
добавлено автор Rocket Hazmat, источник
Спасибо. Это потрясающе.
добавлено автор BaconJuice, источник
Быстрый вопрос для вас. Как изменить код соответствия линии .match (/^.*: [(\ w {3} \ d {2} \ d {4})] /); так что иногда можно сказать, что данные в скобках могут быть похожими на этот формат [16 марта 2011: 11: 52: 51 GMT]
добавлено автор BaconJuice, источник
Если вам когда-нибудь понадобится печень или почка, дайте мне знать =)
добавлено автор BaconJuice, источник
У меня только один последний вопрос! Я попытался сыграть с вашим кодом, но, похоже, я ошибаюсь. Как изменить результат с «Jul 01 2012», «Jul 03 2011», «28 июля 2011», «12 июля 2010» на «01 июля 2012» «03 июля 2011» «28 июля 2011» «12 июля 2010 «по существу, удаляя запятую и заменяя ее на разрыв строки.
добавлено автор BaconJuice, источник
function extractBetweenBrackets(str) {
  return str.split(/\n/).map(function(x) {
    if (x.match(/:\[(.*?)\]/)) { return RegExp.$1; }
  });
}

var str = 'username ="Test1" :[Jul 01 2012]\n'
        + 'username ="Test2" :[Jul 03 2011]\n'
        + 'username ="Test3" :[Jul 28 2011]\n'
        + 'username ="Test4" :[Jul 12 2010]';

extractBetweenBrackets(str);
// => ["Jul 01 2012", "Jul 03 2011", "Jul 28 2011", "Jul 12 2010"]
1
добавлено

Here: /[a-z]+ \d{2} \d{4}(?=\]$)/gim

[a-z]+    # multiple basic latin chars.
          # an empty space
\d{2}     # a 2 digit integer
          # an empty space
\d{4}     # a 4 digit integer
(?=\]$)   # followed by a closing square bracket and then an end-of-line

Флаги:

  • g is for global, makes it match as many as it can
  • i is for case insensitive. This is for the first part
  • m is for multiline, which makes the dollar sign match the end of line instead of end of string
0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском