Forum Webscript.Ru
Программирование => Регулярные выражения => Тема начата: tarya от 05 Января 2004, 16:11:49
-
Привет.
Мне тут нужно по зарез отыскать в строке такую штуку - строка в которой есть слово любой длины, возможно два слова и более за которым сразу без пробела открываются кавычки и далее продолжается в кавычках слово или более за которым кавычки закрываюся и продолжается текст.
пример: Энергоспецремонт АЭК"Киевэнерго" - нужно отыскать АЭК" и вставить между ними пробел.
Уже измучался, несколько часов сижу, .. но невышло ничего, просто отыскиваю слова с кавычками и все..
помогите если кто может.
спасибо.
-
Может так (на вскидку, без проверки)...
~s /^([А-Яа-яЁё\\s\\w]+)\\"(.*)$/$1 \\"$2/
P.S. исправил - съел слеши
еще раз исправил после проверки...
-
s/(\\S)(".+?")/$1 $2/sg;
-
:)
то ничего неработало, зато я написал может и неправильно но заработало
^([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\s\\w\\-]+)*["-]([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\ \\s\\w\\-]+)*"([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\ \\s\\w\\-]+)*$
-
tarya
Весьма странно, что на моем примере, что на примере ondr
у меня получался правильный ответ:
Энергоспецремонт АЭК"Киевэнерго" bla bla bla -> Энергоспецремонт АЭК "Киевэнерго" bla bla bla
Может просто кто-то неправильно задал вопрос? :)
-
странно, конечно может и я чтото неправильно делаю, ... беребирациклом из базы данных строки и сверяю их через
$soc = ereg_replace (\'^([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\s\\w\\-]+)*["-]([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\ \\s\\w\\-]+)*"([A-Za-zА-Яа-яЁё0-9\\.ІіЇїЄє\\ \\s\\w\\-]+)*$\', \'\\\\1 "\\\\2"\', $row[sokr]);
странно но когда я использовал твой запрос, ничего проти него неимею но он ничего вообще ненаходил, воообще ноль
$soc = ereg_replace (\'~s /^([А-Яа-яЁё\\s\\w]+)\\"(.*)$/$1 \\"$2/\', \'\\\\1 "\\\\2"\', $row[sokr]);
вот так ноль...
а запрос парня второго вообще только ошибку выдавало.
-
s/(\\S)(".+?")/$1 $2/sg; - это perl
Вот тебе для php: preg_replace(\'/(\\S)(".+?")/s\', \'\\\\1 \\\\2\', $your_var);
-
tarya
Ты просто не правильно понял конструкцию:
~s /^([А-Яа-яЁё\\s\\w]+)\\"(.*)$/$1 \\"$2/
где:
^([А-Яа-яЁё\\s\\w]+)\\"(.*)$ - что искать;
$1 \\"$2 - на что заменять
Сотвественно:
s/(\\S)(".+?")/$1 $2/sg;
(\\S)(".+?") - что искать;
$1 $2 - на что заменять;
sg - как заменять...