Измените необработанный ввод, чтобы он выглядел как расписание автобусов в указанном формате c с помощью регулярных выражений? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь выяснить это уже довольно давно, но не могу найти решение, которое бы работало сразу или так, как я предпочитаю.

У меня есть вход, который выглядит так:

0430
0500 25 50
0615 34 51
0708 26 43

И мне нужно превратить его в это:

04:30
05:00,05:25,05:50
06:15,06:34,06:51
07:08,07:26,07:43

Так как это только часть ввода и замена всего вручную не вариант, мой Предполагается, что лучшим вариантом будет go с регулярным выражением.

Что нужно сделать:

  1. Вставить двоеточие после первых двух шифров (что-то вроде (^\d{2}), а затем делать замену / замену на $1:)
  2. Заменить каждый пробел запятой + первые два шифра + двоеточие. Моя идея состояла в том, чтобы захватить группу (^\d{2}:) и затем заменить все пробелы на ,$1 (для каждой строки), но я не могу найти способ сделать это.

Я использую regex101.com за это, так что если у вас есть какие-либо советы о том, как это сделать или где это сделать (или даже если regex не способ сделать это, какой другой способ вы бы порекомендовали) любая помощь будет оценена.

Заранее спасибо!

1 Ответ

1 голос
/ 12 января 2020

Вот способ выполнить работу с помощью Блокнота ++:

  • Ctrl + H
  • Найти что: ^(\d\d)(\d\d)(?:\h+(\d\d)\h+(\d\d))?
  • Заменить на: $1$2(?3,$1\:$3,$1\:$4:)
  • CHECK Обернуть вокруг
  • CHECK Обычный выражение
  • Заменить все

Объяснение:

^               # beginning of line
  (\d\d)        # group 1, 2 digits
  (\d\d)        # group 2, 2 digits
  (?:           # non capture group
    \h+         # 1 or more horizontal spaces
    (\d\d)      # group 3, 2 digits
    \h+         # 1 or more horizontal spaces
    (\d\d)      # group 4, 2 digits
  )?            # end group, optional

Замена:

$1              # content of group 1
$2              # content of group 2
(?3             # if group 3 exists
  ,$1\:$3           # a comma then content of group 1 and 3
  ,$1\:$4           # a comma then content of group 1 and 4
  :             # else nothing
)               # end conditional

Снимок экрана (до):

enter image description here

Снимок экрана ( после):

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...