Следующее регулярное выражение:
^\[([^\]]+)\]
захватит дату в начале строки плюс квадратные скобки и поместит материал между квадратными скобками в группу, которую можно извлечь самостоятельно.
Обратите внимание, что ваш текстовый редактор может иметь немного другой синтаксис. Вот как это ломается:
^ = beginning of line/string
\[, \] = literal [ and ] characters
() = signifies a group to capture
[^\]] = matches any character _except_ a close bracket
(this keeps the match from being too greedy)
+ = one or more of the previous
РЕДАКТИРОВАТЬ: Это предполагает, что ваше средство регулярных выражений поддерживает группы (что большинство делает). Самый простой способ объяснить группы - это просто показать вам, как они работают с одним таким движком. В интерпретаторе Python:
>>> import re
>>> s = '[2010-01-15 06:18:10.203] [0x00001388] [SHDNT] ...'
>>> r = re.compile(r'^\[([^\]]+)\]')
>>> m = r.search(s)
Это создает объект регулярного выражения и ищет в строке первый набор текста, который ему соответствует. Результат возвращается в объекте совпадения:
>>> m
<_sre.SRE_Match object at 0x1004d9558>
Чтобы получить весь набор текста, который был сопоставлен, соглашение Python должно вызывать group()
для объекта сопоставления:
>>> m.group()
'[2010-01-15 06:18:10.203]'
и, чтобы получить в скобках только то, что нужно, я передаю номер нужной группы (в данном случае это только один набор символов, то есть только одна группа):
>>> m.group(1)
'2010-01-15 06:18:10.203'
Если я выполняю замену вместо поиска, я использую функцию sub
. Sub принимает строку, которую я хочу заменить на совпадение full , после чего следует строка ввода и возвращает строку с выполненной заменой, если совпадение было найдено:
>>> r.sub('spam spam spam', s)
'spam spam spam [0x00001388] [SHDNT] ...'
Однако строка замены поддерживает escape-последовательности, которые ссылаются на конкретные значения групп, захваченных совпадением. Замена группы обозначена \N
, где N - номер группы. Следовательно:
>>> r.sub(r' \1 ', s)
' 2010-01-15 06:18:10.203 [0x00001388] [SHDNT] ...'
что вы и хотите.