|
|
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Надо выцепить из текста все случаи (подстроки) отвечающие следующим критериям: 1. Подстрока начинается со слова AAA 2. Подстрока заканчивается словом BBB 3. Подстрока не содержит слова ZZZ. Вот это вот "не содержит" никак не могу спрограмить Есть возможность проверять что не содержит какие-то символы: [^z], но нужно чтобы не было конкретного слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 16:02 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Python 2.5 (?!...) Matches if ... doesn't match next. This is a negative lookahead assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if it's not followed by 'Asimov'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 16:35 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Смотря какой язык используеш... У нас например есть несколько вариантов для решения п.3 Код: plaintext 1. ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 16:37 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
AutomaterНадо выцепить из текста все случаи (подстроки) отвечающие следующим критериям: 1. Подстрока начинается со слова AAA 2. Подстрока заканчивается словом BBB 3. Подстрока не содержит слова ZZZ. Вот это вот "не содержит" никак не могу спрограмить Есть возможность проверять что не содержит какие-то символы: [^z], но нужно чтобы не было конкретного слова. Ну, что-то типа так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:22 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
пусть Automater скажет, на каком языке он пишет эти выражения, а то мы тут насоветуем... -- Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:23 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:25 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Green2пусть Automater скажет, на каком языке он пишет эти выражения, а то мы тут насоветуем...хреновый! С# - айтов в смысле регулярных... qu-quЗ.Ы. курить надо т.н. (?! ) Grouping construct...Да допёр я до этого... Но тут "начинается с -", частный случай. А если просто в строке не должно быть подстроки? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:30 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
AutomaterС# - айтов в смысле регулярных..."Ацтой" там слово. Кароче пока мучуюсь вот так: Expression-Based Patterns - example that matches words within a string and capitalizes them: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Но это ж решение "через ж." И вообще, после нескольких полномасштабных серфов по этому вопросу у меня создалось впечатление что в C# нельзя проверить отсутствие последовательности символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:34 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Automaterу меня создалось впечатление что в C# нельзя проверить отсутствие последовательности символов. Отрицания еще никто не отменял Т.е. ты проверяеш "наличие", потом добавляеш к этому условию отрицание и вуаля! Или у "насильников" такое не катит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 08:59 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
qu-quНу, что-то типа так: Код: plaintext 1. 2. 3. наверное все таки имелось в виду: (?! \w* tr)\w*ty тестовый пример подобран неудачно и решение действительно частное, но не по той причине, что была озвучена. Решение первоначальной задачи: (\bAAA\b(?!(?!.*?\bBBB\b).*?\bZZZ\b).*?\bBBB\b) если имелись в виду не слова, а подстроки, \b убрать но я бы делал вот так: Код: plaintext 1. 2. 3. 4. и не лохматил бабушку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 09:14 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) qu-quНу, что-то типа так: Код: plaintext 1. 2. 3. наверное все таки имелось в виду: (?! \w* tr)\w*ty ... Да, вы правы, именно это и имелось ввиду, прошу прощения у топиккастера за некоторую небрежность в тестовом примере, однако ж, я честно в З.Ы. сказал, что "курить" надо именно Grouping construct, а не ждать от посетителей форума готовых решений... (у отвечающего, банально, может не хватать времени, чтобы проверять досконально основную идею ответа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 10:35 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) (\bAAA\b(?!(?!.*?\bBBB\b).*?\bZZZ\b).*?\bBBB\b) мда. поторопился это тоже не работает. Проблема в том, что при неуспешном сопоставлении поиск не останавливается, а продолжается дальше :( Вот это теоретически должно работать: Код: plaintext 1. Идея думаю понятна :) К сожалению, у меня оно валит Perl P.S. В моей самописной машинке регулярных выражений эта задачка решается элементарно, так как я добавил в квантификатор возможность задания стоп-выражения P.P.S. Замечание относительно лохматой бабушки остается в силе, такого рода задачи проще решаются вне стандартного регулярного выражения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 11:18 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 13:16 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Automater Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с# внимательно читай про бабушку, остальное игра ума эта задачка не для регекспов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 13:20 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Automater Gluk (Kazan)К сожалению, у меня оно валит Perl нужен с# внимательно читай про бабушку, остальное игра ума эта задачка не для регексповWho is missis Babushka? Я много серфил. Создалось впечатление что нету никаких отрицаний целых подстрок . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 13:25 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Код: plaintext 1. 2. 3. 4. и не лохматил бабушку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 13:42 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
AutomaterСоздалось впечатление что нету никаких отрицаний целых подстрок . У нас в Cache проверка по шаблону возвращает: 0 - ложь 1 - истина если подставить отрицание к выражению "содержит" - получим "не содержит" Хотя в этом не нужны регулярные выражения... У нас есть такая бинарная операция "содержит" Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 14:50 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
krvsa AutomaterСоздалось впечатление что нету никаких отрицаний целых подстрок . У нас в Cache проверка по шаблону возвращает: 0 - ложь 1 - истина если подставить отрицание к выражению "содержит" - получим "не содержит" Хотя в этом не нужны регулярные выражения... У нас есть такая бинарная операция "содержит" Код: plaintext 1. 2. 3. 4. Я конечно понимаю, что у кашистов принято называть регулярными выражениями все что угодно кроме регулярных выражений, но автор явно сказал, что его интересует C# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 15:14 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Про отрицание писал я, вот и отписался... ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 15:40 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
AutomaterЯ много серфил. Создалось впечатление что нету никаких отрицаний целых подстрок .Вообще-то отрицания есть. Только с ними работать сложно :) Если на время отвлечешься от C# и почитаешь perlre, там есть глава под названием Backtracking. И там с примерами объясняется как работает движок регулярных выражений и почему AAA.*(?!ZZZ) работает не так как ожидалось. А вообще, отрицание можно сделать двумя способами. Через (?!word) или (word){0}. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 18:22 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
если так? Не проверял. AAA(?:[^BZ]*(?!ZZZ)Z*)+BBB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2007, 18:27 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoесли так? Не проверял. AAA(?:[^BZ]*(?!ZZZ)Z*)+BBB частное решение [^BZ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 08:20 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
White Owlили (word){0}. Гмм. всегда считал, что сие совпадет с пустой строкой, стало быть найдется в любой строке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 08:22 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
я делал так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 10:18 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) White Owlили (word){0}. Гмм. всегда считал, что сие совпадет с пустой строкой, стало быть найдется в любой строкеОшибался :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 18:25 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
White OwlОшибался :) Уел Но исходной задачи это увы не решает Потому что как только мы добавим квантификатор на произвольный символ, он скушает ZZZ и его не будет. Велеть ему не кушать подстроку мы не умеем, а все базирующееся на символьных наборах будет частным решением. Или я не прав ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 11:17 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. что то я не придумал случая когда оно не сработает и что значит частное решение? на место AAA BBB и ZZZ можно подставить любые другие строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 12:57 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellurна место AAA BBB и ZZZ можно подставить любые другие строки Угум, а [^Z] в регулярном выражении в RunTime-е будешь строить ??? А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ??? Например: AAA = qwerty BBB = abcd ZZZ = abef Частным считаю решение, приниципиально зависимое от входных данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 13:03 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Но исходной задачи это увы не решает Потому что как только мы добавим квантификатор на произвольный символ, он скушает ZZZ и его не будет. Велеть ему не кушать подстроку мы не умеем, а все базирующееся на символьных наборах будет частным решением. Или я не прав ?Почти прав. Произвольный символ не скушает ZZZ а сместит его. Любой шаблон содержащий отрицание слова на самом деле означает "и в строке есть подстрока которая не равна ZZZ". Поэтому если у нас есть AAAxZZZ и мы проверяем на (ZZZ){0} подстрока xZ уже удовлетворяет условию, и все выражение становится правдой. В общем, до тех пор пока у нас в строке нету произвольных символов отрицание будет работать, как только между отрицательным и 'положительным' шаблоном появляется произвольный символ - отрицание работать перестает.... Поэтому обычно задачи типа "проверить что в строке между словами AAA и BBB нету слова ZZZ" решаются через два условия. Что-то в духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 18:00 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Код: plaintext 1. что то я не придумал случая когда оно не сработаета.... это мысль. Запретить первый символ слова или разрешить первый символ после которого не идет конец слова. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 18:11 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Надо подумать над идеей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 18:18 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Угум, а [^Z] в регулярном выражении в RunTime-е будешь строить ??? А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ??? Например: AAA = qwerty BBB = abcd ZZZ = abef Частным считаю решение, приниципиально зависимое от входных данных то же самое можно сказать и про AAA, BBB их же в током случает тоже "RunTime-е будешм строить" не вижу нечего сложног сделать [^Z], т.к. Z - это всего лишь первая буква слова ZZZ. А то так получается надо написать регулярное выражение которое не зная слова AAA должно определить что с него должна начинаться подстрока, должна оканчиваться на некое слово BBB которое тоже в выражении не фигурирует. Фантастика, похоже регулярные выражения научились читать мысли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 07:04 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) А если BBB и ZZZ (те самые которые любые строки) одинаковый префикс имеют, как выражение выглядить будет ??? Например: AAA = qwerty BBB = abcd ZZZ = abef точно так же и будет выглядеть Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 07:08 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
ну да, правда вместо "+" стоит "*" поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 07:10 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
White OwlПоэтому обычно задачи типа "проверить что в строке между словами AAA и BBB нету слова ZZZ" решаются через два условия. Что-то в духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вы только что повторили мою мысль относительно лохматой Бабушки (см. выше по треду) Задача не решается в рамках универсального регулярного выражения Ясный пень, что она легко решается за этими рамками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 10:07 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellurточно так же и будет выглядеть Если не сложно, будь так добр написать универсальное Perl-овое регулярное выражение, решающее задачу. Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 10:11 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Если не сложно, будь так добр написать универсальное Perl-овое регулярное выражение, решающее задачу. Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачу Теперь я, кажется, понял о чем речь. Речь о том что Perl умеет подставлять строки в регулярные выражения из "$1, $2 и $3" К сожалению на Perl не пишу. Пишу на PHP. там в стандарных функциях preg_match() такой возможности нет. preg_match() оперирует одной входной строкой, и на выходе получаем массив совпадений. Так что вся ваша универсальность работает опять же не везде. не знаю как дело обстоит с C# и .Net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 10:31 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Так что вся ваша универсальность работает опять же не везде. не знаю как дело обстоит с C# и .Net Как я уже сказал, все это обсуждалово не более чем игра ума (поскольку есть простой способ решить задачу вне регулярного выражения). Поскольку игра ума хочется чистого решения. Есть чистое решение, подставляющее переменные в выражение (и для PHP кстати). Нет чистого решения, подставляющего результаты обработки этих переменных Ну и вопросы эффективности. Все эти игры могут существенно просадить производительность, по сравнению с простым и незамысловатым кондовым решением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 10:37 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачубоюсь, в пыхе (возможно и в перле) выражение "$var" является не строкой, а именно куском кода, генерирующего строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 11:34 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Ну и вопросы эффективности. Все эти игры могут существенно просадить производительность, по сравнению с простым и незамысловатым кондовым решением Согласен. каждой технологии свое место. И использование регулярных выражений здесь не очень то уместно. Но это надо решать на этапе постановки задачи. Я же просто пытался предложить решение в рамках уже поставленой задачи (вопрос был о решении с помощью регулярных выражений) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 11:34 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmo Gluk (Kazan)Конкретные значения подстрок должны интерполироваться из $1, $2 и $3 соотвественно. Именно выражение, а не скажем кусок кода, генерирующее выражение, решающее частную задачубоюсь, в пыхе (возможно и в перле) выражение "$var" является не строкой, а именно куском кода, генерирующего строку. Это вопрос теологический, но при изменении значения переменной регулярное выражение разумеется будет перекомпилировано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 11:54 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Ты ведь именно теологический вопрос поднял. А регексп будет компилиться ровно так, как напишешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:06 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoТы ведь именно теологический вопрос поднял. А регексп будет компилиться ровно так, как напишешь. теологический, вопрос поднял автор топика :) Задача решается проще и эффективнее без помощи регулярных выражений. Решение White Owl разумеется эффективнее того что предложил я, поскольку поиск на минимальном квантификаторе простой строки (без конструкции выбора) эффективно оптимизируется BM-поиском. Собственно с этого места тему можно считать закрытой, дальше идет теология ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:30 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Код: plaintext 1. что то я не придумал случая когда оно не сработает и что значит частное решение? на место AAA BBB и ZZZ можно подставить любые другие строки Кстать, не работает ни фига ни так: Код: plaintext 1. 2. 3. 4. 5. ни так: Код: plaintext 1. 2. 3. 4. 5. Почему не работает разбираться было лениво, господа теоретики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:34 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Вдогон Gluk (Kazan)Почему не работает разбираться было лениво, господа теоретики Могу предположить что патамушта DDD Давайте все же решать поставленные задачи, а не те которые проще решить (оставляя "более общее решение в качестве упражнения для читателя"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:37 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
пробел выводит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:38 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
так: Код: plaintext 1. 2. 3. 4. 5. тоже не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:38 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoпробел выводит А должно DDD ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:40 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
имхо, правильно пробел выводит, попробуй пробел после ААА стереть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:41 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
попробуй так AAA((?:[^Z]|Z(?!ZZ))*)BBB зы перл – здло и АДЪ следует за ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:43 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoимхо, правильно пробел выводит, попробуй пробел после ААА стереть и чо ? выдала тот же пробел вообще какую задачу то решаем ??? Та что в первом посте подразумевает ответ DDD (три раза IMHO) Так что если это и решение, то увы неизвестно какой задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:45 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoпопробуй так AAA((?:[^Z]|Z(?!ZZ))*)BBB зы перл – здло и АДЪ следует за ним Так работает концептуальненько А кто у нас седня добро ? awk или egrep ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 12:51 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
добро – это С# в крайнем случае С++ Gluk (Kazan)и чо ? выдала тот же пробелхмм… или перл не умеет в регулярными выражениями работать, или ты где-то не там пробел стёр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:01 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Кстать, не работает ни фига ни так: Код: plaintext 1. 2. 3. 4. 5. ни так: Код: plaintext 1. 2. 3. 4. 5. Почему не работает разбираться было лениво, господа теоретики мне тоже лень разбираться почему у Вас не работает. Уменя На PHP прекрасно работает AAA([^Z]|Z(?!ZZ))+BBB и для CCC AAA DDD BBB ZZZ BBB ZZZ FFF и для... ЛЮБЫХ других случаев. хоть рандомом забивай строку. Но я так подозреваю в $1 у вас будет содержимое первой скобки а не всего совпадения - поэтому там и пробел. Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. то есть нулевой элемент - все совпадение, а начиная с 1 - паттерны выделеные скобками идут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:02 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
все я прогнал согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:04 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoдобро – это С# в крайнем случае С++ Хорошо что не VB.NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:05 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) maXmoпробел выводит А должно DDD ;) не должно в скобках один символ всего если бы /AAA(([^Z]|Z(?!ZZ))+)BBB/ тогда в $1 было бы " DDD " а в $2 пробел это же основы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:05 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Gluk (Kazan) maXmoпробел выводит А должно DDD ;) не должно в скобках один символ всего если бы /AAA(([^Z]|Z(?!ZZ))+)BBB/ тогда в $1 было бы " DDD " а в $2 пробел это же основы я же сказал, выше что прогнал я сюда заскакиваю урывками в свободное от основной работы время когда смотришь мельком можно еще не так лохануться, так что не надо про основы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:07 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) я же сказал, выше что прогнал я сюда заскакиваю урывками в свободное от основной работы время когда смотришь мельком можно еще не так лохануться, так что не надо про основы сорри когда я начинал писать пост вашего еще не было, разница в минуту всего - сами посмотрите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:10 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:20 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Tellur Gluk (Kazan) я же сказал, выше что прогнал я сюда заскакиваю урывками в свободное от основной работы время когда смотришь мельком можно еще не так лохануться, так что не надо про основы сорри когда я начинал писать пост вашего еще не было, разница в минуту всего - сами посмотрите Если забыть о том, что выражение надо вычислять динамически, то решение в принципе нормальное. Единственно, что на однобуквенных подстроках будет частный случай с изменением структуры выражения. Но простой поиск строки с последующим поиском в найденном безусловно будет эффективнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2007, 13:22 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Мдаааа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Удивительно, что это не пришло в голову сразу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 08:20 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoдобро – это С# Теперь немножко лирики про извечную борьбу Бобра сО слом: 1. На сегодня машинка регулярных выражений Perl наиболее заоптимизированная из всехсуществующих. 2. В части нововведений в RegExp, Perl всегда был законодателем мод, расширения 5-ой версии уже стали фактическим стандартом. 3. .Net в настоящий момент вводит новые фичи, отсутствуюшие в Perl и их нововведения безусловно интересны и достойны всяческого внимания, но: 3.1 Некоторая часть нововведения (как например разбор справа налево) откровенно сыра и не готова для практического использования. 3.2 Относительно набившей оскомину задачи проверки баланса скобок, решение предлагаемое Perl (возможность применения рекурсии) мне представляется несколько более универсальным чем финт приедложенный .Net-ом с определением уровня вложенности с использованием именованных сохранений (хотя возможно я просто не до конца вкурил последнее). 3.3 В отличии от .Net в Perl регулярные выражения интегрированы (про C# врать не буду, но в Java вереницы бакслешей (в частности) просто убивают). 3.4 Самое большое, что мне не нравится в .Net, то что его разработчики сознательно и последовательно игнорируют принцип нулевых издержек . Я не хочу платить за функционал (Capture), который не использую (и который вообще вряд ли кто нибудь когда то будет использовать). 3.5 Возможность использования делегатов при подстановке достойна восхищения, но возможности Perl-а в этом отношении никак не меньше. 3.6 Пожалуй единственная действительно ценная возможность предоставляемая .Net и отсутствующая в Perl - ретроспективные проверки произвольной ширины, но и она в подавляющем количестве случаев всего лишь позволит тормознуть крутейший пень непосильным количеством возвратов. 3.7 Документация по regexp-ам у .Net - говно Плавно переходим к части не связанной с регулярными выражениями: Совсем недавно, одному из наших заказчиков срочно занадобилась подсистема виртуального хостинга, интегрируемая с нашей биллинговой системой. После того как все остальные разработчики отказались за нее браться (сославшись на откровенно нереальные сроки), я не имея предварительных наработок в этой области, сделал ее за 2 недели (отдельное спасибо CPAN) в связке (Perl+PL/SQL), попутно освоив Perl, некоторые тонкости DNS, CommunigatePro, LDAP, виртуальный хостинг на Apache, MySQL для задач виртуального хостинга и развертывание всего этого добра под Windows и Solaris. Весь модуль - несколько таблиц, пакетов PL/SQL, JOB-ов и запускаемых по cron или at скриптов Perl (в количестве 9 штук общим объемом не более 700 строк с подробным комментированием), которые немедленно передал на сопровождение другому сотруднику, попутно показав, что писать сопровождаемый софт на Perl можно . Что то мне подсказывает, что выбери я C# или даже C++, мне было бы низачто не уложиться в озвученные сроки. Немалую роль сыграла и кроссплатформенность Perl, поскольку заказчик хотел видеть реализацию на солярке. Теперь о меркантильном: Perl - бесплатен . Безусловно и для любого использования (и по заверениям создателей навсегда таковым и останется). Более того, по всему миру разбросаны десятки тысяч энтузиастов, разрабатывающих бесплатные модули для решения всевозможных задач. Фактически, разработать собственный востребованный модуль Perl очень сложно по одной только причине - скорее всего он уже написан, тщательно задокументирован и выложен на CPAN. Все это сказано про Perl - который Вы считаете Злом, а что хорошего ВЫ можете рассказать о столь любимом вами Порождении Империи Добра ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 08:57 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Мдаааа... ... /$A(?:(?!$Z).)*$B/ ... Удивительно, что это не пришло в голову сразу :) Забавно, именно сегодня утром, во время езды в маршрутке на работу, мне пришла в голову абсолютна та же "мысля", только, оформилась она в нечто более "многословное", типа так: "/$A((?!$Z).(?!$Z))*$B/", или так: "/$A(.(?!$Z)(?<!$Z))*$B/". Ваш случай, безусловно, более "лаконичен", только я что-то не могу пока догнать - каким образом (?: ) ( noncapturing group ) позволяет избавиться от дублирования negative lookbehind и negative lookahead ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 10:15 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
qu-quВаш случай, безусловно, более "лаконичен", только я что-то не могу пока догнать - каким образом (?: ) ( noncapturing group ) позволяет избавиться от дублирования negative lookbehind и negative lookahead ? Я просто понял, что легко можно переложить на стандартные regexp-ы то как я решаю эту задачку в своей машинке (которая скорее парсер). Просто стоп-выражение в квантификаторе. Если со следующего символа не начинается ZZZ, захватываем любой символ. Ваши проверки избыточны, внешний квантификатор тоже может быть любой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 10:25 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
qu-qu noncapturing group в данном случае не более чем оптимизирующий наворот. не в нем дело, это вполне может быть обычная скобка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 10:27 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) qu-qu noncapturing group в данном случае не более чем оптимизирующий наворот. не в нем дело, это вполне может быть обычная скобка Это я уже понял практически сразу же после того, как спросил, а потом - внимательнее посмотрел на выражение... Gluk (Kazan)... Ваши проверки избыточны, внешний квантификатор тоже может быть любой. Это тоже стало более-менее понятно (про избыточность), после того как я "поигрался" с различными сочетаниями negative lookbehind и negative lookahead ... Однако ж, одна неясность все-таки осталась - почему на таком тесте: "CCCAAADDDBBBAAAZZZDDDBBBAAADZZZDDBBBAAADDZZZDBBBAAADDDZZZBBBAAAZZZBBBZZZAAABBBFFF"... Вот это "AAA((?!ZZZ) . )*BBB" (или "AAA( . (? < !ZZZ))*BBB") срабатывает: AAADDDBBB AAABBB А это "AAA( . (?!ZZZ))*BBB" (или "AAA((? < !ZZZ) . )*BBB") нет: AAADDDBBB AAAZZZDDDBBB (или AAADDDZZZBBB) AAAZZZBBB AAABBB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:00 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
qu-quВот это "AAA((?!ZZZ) . )*BBB" (или "AAA( . (? < !ZZZ))*BBB") срабатывает: AAADDDBBB AAABBB А это "AAA( . (?!ZZZ))*BBB" (или "AAA((? < !ZZZ) . )*BBB") нет: AAADDDBBB AAAZZZDDDBBB (или AAADDDZZZBBB) AAAZZZBBB AAABBB Вероятно потому, что сначала надо проверять, а уж затем захватывать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:04 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)... Если со следующего символа не начинается ZZZ, захватываем любой символ... Предыдущий вопрос можно переформулировать так: какая "концептуальная" разница между "если со следующего символа не начинается ZZZ" и "если со следующим символом не заканчивается ZZZ"? Gluk (Kazan)... Вероятно потому, что сначала надо проверять, а уж затем захватывать... Ну дык, вот же: "AAA((? < !ZZZ) . )*BBB" - сначала (вроде бы) "проверяет", однако ж - не работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:28 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Вдогонку... Gluk (Kazan)... Вероятно потому, что сначала надо проверять, а уж затем захватывать... А вот это: "AAA(( . ? < !ZZZ))*BBB" - сначала (вроде бы) "захватывает", однако ж - работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:30 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
qu-qu... "AAA( . (? < !ZZZ))*BBB" ... ну это, скобкой ошибся, как водится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:32 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)(про C# врать не буду, но в Java вереницы бакслешей (в частности) просто убивают).В С# два типа строк: с-образные и бейсикообразные, во втором символы экранировать не надо. Регекспы не интегрированы ради простоты синтаксиса языка. Я имел в виду не возможности регекспов, а специфические особенность перла как языка Gluk (Kazan)заказчик хотел видеть реализацию на солярке.в такой постановке про .нет можно было даже не думать. Gluk (Kazan)Perl - бесплатен .я рад за него :) Gluk (Kazan)Безусловно и для любого использованиято есть его код в PD? Если по-умному, тебе следовало указать лицензию, а не пытаться изложить её упрощённо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:40 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoЕсли по-умному, тебе следовало указать лицензию, а не пытаться изложить её упрощённо. изволь По раздуванию щек, я так понимаю, что в защиту C# кроме двух типов строк и невозможности работы на солярке сказать нечего ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 11:51 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) изволь вот видишь, его можно использовать не по-любому, а только так, как описано в лицензии, а по-другому его использовать нельзя. И эти ограничения чётко расписаны. Gluk (Kazan)По раздуванию щек, я так понимаю, что в защиту C# кроме двух типов строк и невозможности работы на солярке сказать нечего ???не представляю, что ты хочешь услышать. Если есть какой-то конкретный вопрос, спрашивай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:08 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
ну если поддержать разговор… То регекспы в .нет тоже интегрированы: попробуй их оттуда выдрать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:09 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoвот видишь, его можно использовать не по-любому, а только так, как описано в лицензии, а по-другому его использовать нельзя. И эти ограничения чётко расписаны Сравним с ЕУЛОЙ ??? maXmoну если поддержать разговор… То регекспы в .нет тоже интегрированы: попробуй их оттуда выдрать Когда сказать нечего, по умному лучше помолчать В следующий раз потрудись небросаться необоснованными заявлениями типа: XXX есть ЗЛО, ведет в АД и зохавает мозк. Уверяю тебя, твой имидж от них только страдает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:19 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
но ведь действительно зохавает :) Gluk (Kazan)Сравним с ЕУЛОЙ ???сравни, уверяю, .нет тоже можно юзать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:26 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
maXmoно ведь действительно зохавает :) Ага, твой похоже уже захавало, а вот мне почему-то знание Perl-а не мешает пользоваться C# и не вызывает спонтанных позывов писать о нем гадости на заборе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 12:37 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Тогда и мне пожалуйста подскажите по регуляркам :) Пишу перл-совместимые на ПХП Строка, которую мне нужно определить, может содержать все буквы латинского алфавита, цифры, а также символы * , . (пробелов может быть сколько угодно и могжет быть любая комбинация разрешенных символов) Я описываю это следующим образом: [\w\d*\.,] но если в строке присутствуют буквы украинского алфавита, такие как і,є,ї то регулярка их пропускает нормально, хотя не должна. Как мне поставить отрицание этих символов (по всей строке) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 19:05 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Potter.Тогда и мне пожалуйста подскажите по регуляркам :) Пишу перл-совместимые на ПХП Строка, которую мне нужно определить, может содержать все буквы латинского алфавита, цифры, а также символы * , . (пробелов может быть сколько угодно и могжет быть любая комбинация разрешенных символов) Я описываю это следующим образом: [\w\d*\.,] но если в строке присутствуют буквы украинского алфавита, такие как і,є,ї то регулярка их пропускает нормально, хотя не должна. Как мне поставить отрицание этих символов (по всей строке) ?А ты разреши только латинский алфавит и цифры. /^[a-zA-Z0-9\*\. ]+$/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 20:13 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Спасибо! Работает! А я думал что [\w] и [a-zA-Z] это одно и то же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 14:06 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Potter.Спасибо! Работает! А я думал что [\w] и [a-zA-Z] это одно и то жеНет, читай документацию внимательнее: perlreA \w matches a single alphanumeric character (an alphabetic character, or a decimal digit) or _, not a whole word. Use \w+ to match a string of Perl-identifier characters (which isn't the same as matching an English word). If use locale is in effect, the list of alphabetic characters generated by \w is taken from the current locale. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2007, 18:32 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Господа, может подскажете как разделить в вордовском тексте ИмяФамилия на Имя Фамилия . все ФИО написаны с большой буквы, а пробелы почему то забывают ставить... У самого не получается написать выражение что б найти даже, не то что поделить.. хорошо бы RegExp который MS Word понимает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 10:59 |
|
||
|
Кто на регулярных выражениях собаку съел? Подскажите...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 15:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1345299]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
206ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
154ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 648ms |

| 0 / 0 |
