У меня есть файл журнала, который полон записей, подобных приведенному ниже:
2017-07-13 11:23:43.717948 [CRIT] mod_dptools.c:1713 SRC=7479569217;7479569217;768733974848304;7479569217;300067;333;-1
Я пытаюсь напечатать определенные значения между ;
, которые являются числовыми (всегда). Например, я хочу напечатать 1-е, 3-е и 5-е число между ;
.
Я попробовал этот шаблон:
(?=;).+?(?=;).+?.+?(?=;)
Он напечатает 2-й и 3-й. Не уверен, как напечатать, например, 2-й и 4-й, не печатая также и 3-й...
ОБНОВЛЕНИЕ:
Может я недостаточно ясно выразился или пример был не в лучшем виде. Итак, позвольте мне добавить к нему дополнительную информацию:
2017-07-13 11:23:43.717948 [CRIT] mod_dptools.c:1713 SRC=123;1234567890;00000000;2222222;7479569217;87654321;300067;333;-1
Мой ожидаемый результат: 123;00000000;7479569217;300067;333;-1
Это означает 1-й номер, затем 3-й, 5-й, 6-й, 7-й, затем 8-й.
Лучше всего было бы выбрать позже, если мне нужны изменения, например, распечатать только 2-ю, 3-ю, 4-ю и 5-ю запись.
\d+(?=;|$)
? - person Wiktor Stribiżew   schedule 13.07.2017768733974848304;7479569217;300067;333;-1
скажем, мне нужно распечатать только те - person Bogdan Stoica   schedule 13.07.2017-?\d+(?:;-?\d+){4}$
? - person Wiktor Stribiżew   schedule 13.07.2017(?<=[;=])-?\d+
? - person Washington Guedes   schedule 13.07.2017