2016-02-24 5 views
3

Я хочу заменить следующие строкиRegex для средней позиции Замена

comments={ts=2010-02-09T04:05:20.777+0000, comment_id=529590|2886|LOL|Baoping Wu|529360} 

в

comments={ts=2010-02-09T04:05:20.777+0000, comment_id=529590, user_id = 2886, comment='LOL', user= 'Baoping Wu', post_commented=529360} 

Мой подход comment_id =. ([0-9]) * для первой замены Его сложный для меня заменяет другое. Может кто-нибудь мне помочь?

+1

, какой язык программирования вы используете? вы можете сделать замену? – bmbigbang

+0

Я не использую язык программирования, но TextMate от Apple Mac –

+0

TextMate использует синтаксис Regex Oniguruma. –

ответ

0

Вы можете выполнить все эти преобразования с помощью одной операции поиска и замены. Используйте следующее регулярное выражение, которое имеет захватив группы:

(comment_id=)(\d+)\|(\d+)\|([^|]+)\|([^|]+)\|(\d+) 

Заменить $1$2, user_id = $3, comment='$4', user= '$5', post_commented=$6

См regex demo

  • (comment_id=) - Группа 1, буквальное последовательность символов
  • (\d+) - Группа 2 : одна или несколько цифр
  • \| - буквальная труба символ
  • (\d+) - Группа 3 соответствие другой части цифр
  • \| - опять же, труба
  • ([^|]+) - группа 4 захвата одного или более символы, кроме |
  • \| - опять же, труба
  • ([^|]+) - Group 5 capturing one or more symbols other than | `
  • \| - еще одна труба
  • (\d+) - Группа 6 соответствия другой части цифр

В строке замены, является $n обратные_связью к захваченным группам.

+0

Спасибо :). Мой набор данных слишком велик, чтобы проверить его на этом веб-сайте. Вы знаете, как я могу проверить его с помощью скрипта python. –

+0

На [regex101.com] (https://regex101.com/r/fP0fS9/3) вы можете получить этот код Python: перейдите в раздел * генератор кода * (см. левую нижнюю панель). Пример кода Python находится внизу. Обратите внимание, что обратные ссылки Python относятся к форме '' \ '' + 'digit'. Замена будет '\ 1 \ 2, user_id = \ 3, comment = '\ 4', user = '\ 5', post_commented = \ 6'. –

+0

Я попробовал его на IDLE. Я получил синтаксис Error следующим образом: p = re.compile (ur '(comment_id =) (\ d +) \ | (\ d +) \ | ([^ |] +) \ | ([^ |] +) \ | (\ d +) ') SyntaxError: недействительный синтаксис Из-за этого символа' –