LINUX.ORG.RU

Regexp - заменить окончания с переносом на запятые

 


1

1

Есть строка вида

array(
  ["1150188_0"]=>array(
    ["system_info"]=>array(
      ["id_seance"]=>      NULL
      ["officeID"]=>       "KJAR228AD"
    )
    ["et"]=>1
["system"]=>     "amadeus"
    ["latin"]=>1
["meta"]=>    NULL
    ["available"]=>     "7"
    ["timelimit"]=>     "2013-09-17 23:59:59"
    ["company_index"]=>1

Я ищу окончания

/(\d\n)|(\"\n)|((\w\n))|(\)\n)/

Мне нужно оставить последний символ, и добавить к нему запятую. Не пойму как. Простая замена \n не подходит, т.к. надо в конкретных случаях.


([\d\w]|\\|\")$

и указать первую группу \1 или $1, нулевая обычно весь матч даст

и да, чо, мужик, реально те влом написать что за либу режекспов ты юзаешь?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
perl -pe 's/(?<=[\w")])$/,/'

(\d входит в \w).

arsi ★★★★★
()
Последнее исправление: arsi (всего исправлений: 1)

regexp'ы бывают разные, ты забыл сказать что именно используешь.

Как уже правильно сказали, запоминай последний символ, потом добавляй его.

В зависимости от варианта regexp'а, возможно потребуется экранировать круглые скобки в шаблоне , а вставлять либо \1, либо $1

router ★★★★★
()
Ответ на: комментарий от router

пробовал уже и так и так

/([\d\w]|\"|\))$/
\\1,

или

$1,

не работает в php

если делаю так

/([\d\w]|\"|\))/

запятая ставится после каждого символа.

seyfer
() автор топика
Ответ на: комментарий от arsi

Большое спасибо. Работает.

В последнем мне не понятна только конструкция ?<=. Почитаю.

Всем спасибо!

seyfer
() автор топика
Ответ на: комментарий от seyfer

> В последнем мне не понятна только конструкция ?<=. Почитаю.

man pcrepattern, «Lookbehind assertions». описание + примеры.

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.