@dlangru

Страница 131 из 719
Grigirii
09.03.2017
13:50:04
за референс можно взять pcre. совместимость не полная, но синтаксис оттуда

а чтобы ошибку пофиксить замени "" на ``

ну или каждый \ на \\

Dmitry
09.03.2017
13:53:16
Угу, пасибо.

Google
Dmitry
09.03.2017
13:53:27
Просто мне блоки кода в формате MD найдо найти

Короче вот пытаюсь блоки кода выделить Дишные https://regex101.com/r/UkM5du/1 Нагугленные примеры не то выделяют...

Блок с одиночными кавычками выделить получается, а вот тут туплю

О. получилось)

сюда кидать пока не буду, а то парсер опять все съест. Щас в самом Дишном коде проверю, а то пока только онлайн работает

А какая стратегия лучше всего? Делать MatchAll для всего блока входного текста по RegEXP или еще как?

Просто задача следующая. Мне нужно апострофы заменить открывающими и закрывающими HTML тегами https://regex101.com/r/EC5WRu/1 Не знаю как лучше сделать

Grigirii
09.03.2017
14:27:21
да, matchAll вполне прокатит

Dmitry
09.03.2017
14:27:51
а как мне начало и конец заменять на открывающий и закрывающие теги?

Grigirii
09.03.2017
14:27:51
ну и на replace посмотри

Dmitry
09.03.2017
14:28:06
просто <div> и </div> же надо

Все равно у меня чувство что Дишные выражения не так как-то работают т.к. онлайн выделение срабатывает, а Ди мне нужные блоки походу вообще не выделяет

Так, а можно как-то без регулярок обойтись. У меня онлайн-редактор и результат работы в Ди упорно отличаются и не могу понять в чем проблема. Можно ли как-то еще сделать?

Google
Pavel
09.03.2017
15:29:03
Можно html распарсить в dom дерево

Dmitry
09.03.2017
15:29:20
Мне бы в начале MD в html перевести...

Dmitry
09.03.2017
15:58:13
Так проблема в том что мне нужны открывающие и закрывающие теги...

Eto
09.03.2017
16:14:46
А что тебе именно надо сделать?

Dmitry
09.03.2017
16:19:43
преобразовать MD в HTML (готовые онлайн-конверторы не подходят т.к. нужно ряд модификаций еще сделать)

Заработало вот такое выражение: auto bigCodeBlock = regex(r"`{3}[\s\S]*?`{3}"); Но на выходе в у меня \r\n\ вылазят

Вроде заработало %)

Shorty(Ale Chapa) Manskiy
09.03.2017
19:23:18
Просто мне блоки кода в формате MD найдо найти
есть мнение, что регулярные выражения неочень для разбора текста https://commandcenter.blogspot.ru/2011/08/regular-expressions-in-lexing-and.html Карпов (viva64) тоже что-то подобное писал.

... и Walter Bright тоже.

... но Захаров (econtrol) думаю с ними не согласен.

Dmitry
09.03.2017
20:00:49
так, а как красиво конец строки заменить? предположим я точно знаю, что строка начинается с xxx и заканчивается xxx. Что есть replaceFirst знаю, но вот как быть с последним (и в моем случае единственным xxx *xxx эзаю чтобы местный парсер не тупил

О, replaceLast есть)

Eto
09.03.2017
21:40:26
... но Захаров (econtrol) думаю с ними не согласен.
А можно ссылку на этого Захарова?

Shorty(Ale Chapa) Manskiy
09.03.2017
21:40:46
econtrol.ru

Это дельфи.

но есть и open-sorce на паскале.

Eto
09.03.2017
21:42:17
Я имел ввиду статью о регулярках.

Shorty(Ale Chapa) Manskiy
09.03.2017
21:42:32
Нету никакой статьи.

Eto
09.03.2017
21:42:45
Или хотите сказать, что EControl Syntax Editor SDK полностью на регулярных выражениях?

Google
Shorty(Ale Chapa) Manskiy
09.03.2017
21:43:44
https://habrahabr.ru/post/314062/ вот немного про регулярные выражения.

https://habrahabr.ru/post/314062/ вот немного про регулярные выражения.
хотя нет, там вовсе не про регулярные выражения, но примпр показатльный.

Dmitry
10.03.2017
00:21:58
Peg кстати не для того?

zk
10.03.2017
08:05:23
Кеп

Dmitry
10.03.2017
08:41:15
Я что-то никак не могу продуплить. Вот есть replaceFirst https://dlang.org/library/std/regex/replace_first.html Могу ли я его как то вызывать вот так: auto str = x.hit.replaceFirst("тут-три-апострофа", "start") просто он т.е. заменить в строке "x.hit" первое вхождение. т.е. впоспользовать им как простым реплейсом, просто у меня оно ругается:



Так, получается что в std.array есть одноименные функции?

Как мне проще всего их использовать? x.hit.std.array.replaceFirst("aaa", "start") через fqdn запись вызывать же не могу как выше написал?

Grigirii
10.03.2017
08:52:24
а почему он нужен на x.hit? где аргумент с регексом в replaceFirst? или это стрингвая замена, а не regex?

Dmitry
10.03.2017
08:53:27
а не подключаил импор std.array и оно само заработало. Вопрос — нужное имя функции компилятор выбрал исходя из количества аргументов? Типа в std.array и std.regex есть две функции с одинаковыми названиями, но разным кол-вом аргуентов

Grigirii
10.03.2017
08:53:48
не только из количества, но и типов

гугл, кроссмодульная перегрузка функций. У Александреску в книге даже отдельная глава

Dmitry
10.03.2017
08:54:53
ок щас

"Кроссмодульная перегрузка - это неиссякаемый источ­ ник проблем, поскольку подразумевает, что при чтении фрагмента кода нужно постоянно держать в голове большой меняющийся контекст." (с) Александреску

Как я понимаю единственный выдохд или частичный импорт (если пространства имен пересекаются) или же использование псевдонимов (alias) верно?

тогда вообще не понятно почему компилятор дал мне такой код скомпилирвать не выругавшись

Grigirii
10.03.2017
09:01:29
ну это способ упростить жизнь. в принципе правила перегрузки не такие уж и сложные, можно жить и так

Dmitry
10.03.2017
09:03:08
О все) у меня почти получилось парсер md написать)

Google
zk
10.03.2017
09:04:23
replaceFirst(string, string, string) а надо (R input, const RegEx re, const(C)[] format) вроде так.

Dmitry
10.03.2017
14:54:47
Блин, у меня регулярка работающая в браузере крэшит компилер

https://regex101.com/r/8e7nPL/3

нужно выделить от первого заголовка H1 до начала H2

И не могу понять что вызывает крэш и что можно упростить в ней, чтобы компилер не падал

zk
10.03.2017
14:57:15
Как именно он падает, может переполнение стека?

Dmitry
10.03.2017
14:58:33
Assertion failure

zk
10.03.2017
14:59:23
значит это не компилятор падает, т.к. было бы ICE.

вроде как.

Admin
ERROR: S client not available

Dmitry
10.03.2017
15:00:14
как регулярку можно упростить? Мне тупо блок нужно выкусывать от начала H1 до конца

начало блока оlиночный символ #

zk
10.03.2017
15:02:27
напише подробней как именно тебе надо, а то я невижу там H1

Dmitry
10.03.2017
15:07:34
мне нужны все совпадения блоков верхнего уровня от их начала до нового блока верхнего уровня

блок верхнего ур\овня начинается с одиночного #

zk
10.03.2017
15:07:48
ясно.

Dmitry
10.03.2017
15:08:05
Сори, я щас от компа отойду...

Eto
10.03.2017
15:09:37
Написать собственный парсер было бы проще.

zk
10.03.2017
15:09:56
Только сейчас понял что это маркдовн.

Eto
10.03.2017
15:18:53
Эх, русский язык всё менее красивым становится.

Google
Dmitry
10.03.2017
15:19:06
Так я и пишу вроде бы парсер, не?

zk
10.03.2017
15:19:17
это точно не парсер.

zk
10.03.2017
15:20:46
ты должен разбить текст на лексемы, потом можно и дальше что-то делать.

Dmitry
10.03.2017
15:22:07
Ок. Это потом. Пока буду признателен если тут кто подскажет как быть

zk
10.03.2017
15:23:21
я незнаю маркдовн, но кажется что его легко обработать.

Eto
10.03.2017
15:24:32
*маркдаун

https://ru.wikipedia.org/wiki/Markdown

zk
10.03.2017
15:25:09
*маркдаун
русский язык сразу стал чище.

Eto
10.03.2017
15:25:29
Не очень. Но звучит лучше.

zk
10.03.2017
15:26:08
если с регулярными выражениями будет сложно, то можеш просто найни все подходящие загаловки, и поделить текст. А потом уже с этими кусками текста работать.

Не очень. Но звучит лучше.
Нора Галь в гробу перевернулась.

Eto
10.03.2017
15:27:41
Вот, реализация парсера: https://github.com/kiith-sa/dmarkdown/blob/master/source/dmarkdown/markdown.d Многовато кода, но можно подсмотреть чего.

Pavel
10.03.2017
15:38:39
@DmitryBubnenkov а у тебя время свободное есть? Могли бы покодить ченибудь вместе в целях обучения.

Dmitry
10.03.2017
15:39:55
Было бы хорошо. Тока у меня свободное время только следующие два дня. Если сможешь завтра будет хорошо

Pavel
10.03.2017
15:40:53
Ну речь идет о длительном сроке, недели, месяцы. Если будет пару часов в неделю свободных то можно уже делать что-то.

Dmitry
10.03.2017
15:42:34
Давай или вечером сегодня или завтра утром спишемся? Я тока за, а то говнокодить неохото)

Pavel
10.03.2017
15:42:54
ок

zk
10.03.2017
15:43:23
Обсуждайте в этом чате, я может тоже с вами буду если не против.

Eto
10.03.2017
15:45:18
Хорошая идея.

zk
10.03.2017
16:42:42
И не могу понять что вызывает крэш и что можно упростить в ней, чтобы компилер не падал
[^] — в D нету такой хрени, вот из-за нее и ошибка при компиляции.

... компилятор не падает. Ошибка из-за использования StaticRegex.

Страница 131 из 719