Опубликовано Август 27, 2012 рубрики:
C#|Комментарии к записи не решено: RegEx, парсинг строки отключены
задача распарсить строку вида «First, Second <email@email.t1>, First <email@email.t2>, email@email.t3»
в массив строк с почтовыми адресами.
(получить в результате: «First, Second <email@email.t1>»,»First <email@email.t2>»,»email@email.t3″)
в адресе может быть запятая, поэтому тупо разбить по ним не получится.
нужно придумать красивое регулярное выражение.
Опубликовано Февраль 25, 2012 рубрики:
XML|Комментарии к записи XSLT преобразования, copy of отключены
copy of — скопировать узел со всеми вложеными элементами и атрибутами.
пример:
Нужно скопировать в итоговую XML узел с именем book из xml:
<?xml version="1.0" encoding="utf-8"?>
<document>
<book>
<title>Book1</title>
<autor name="Boris" lastname="Vasil'ev" />
<pages>334</pages>
</book>
</document>
для этого xslt должен быть такого вида:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<output>
<myname></myname>
<myfavoritebook>
<xsl:copy-of select="//book"/>
</myfavoritebook>
</output>
</xsl:template>
</xsl:stylesheet>
результат преобразований будет следующим:
<?xml version="1.0" encoding="utf-8"?>
<output>
<myname />
<myfavoritebook>
<book>
<title>Book1</title>
<autor name="Boris" lastname="Vasil'ev" />
<pages>334</pages>
</book>
</myfavoritebook>
</output>
Опубликовано Февраль 14, 2012 рубрики:
C#|Комментарии к записи C# MVC3 + задачка отключены
в копилке вопросов пополнение.
как сделать такую штуку. Для одной абстрактной сущности реализовать возможность изменения модели контрола и представления.
К примеру есть рубрика «статьи» 90% которых стандартны. Но иногда требуется расширить запись, подгрузив в нее некоторые данные.
Реализовать это хочется так, есть стандартный контролер и модель, мы предаем параметр и если по параметру не находится класса для обработки этого запроса, то пускаем его на стандартный, в противном случае порождаем объект и используем его.
Видится мне что должен быть какой-то предварительный слой, который анализирует переданные параметры, а потом уже создает контролер или использует контролер по умолчанию.
Сейчас решение этой задачки кроется в расширении модели до такой степени чтобы она учитывала все варианты, в контроле большой switch который заполняет нужные данные в этой модели. И кидает эту модель в нужное вьюху. А хочется красоты…
Опубликовано Февраль 2, 2012 рубрики:
SQL|Комментарии к записи SQL запрос в красивый LINQ отключены
есть 2 таблицы, в первой хранится общая информация о книгах и журналах, во второй жанры и некоторые детали.
нужно выбрать все жанры книг которые есть в базе.
SQL запрос:
select distinct info.[GenreId] from [Litera] as lit
join [Information] as info on lit.LitId=info.LitId
как составить простой и красивый linq запрос, вопрос пока остается открытым.
Опубликовано Ноябрь 4, 2011 рубрики:
C#,
Perl,
PHP|Комментарии к записи RegExp отключены
Как обычно, появилась интересная задачка по регулярным выражениям, требуется написать некоторый макрос, который при встрече в шаблоне текста будет заменяться определенными значениями сформированными из параметров макроса. И чтобы было не совсем тривиально будет еще упрощенная версия этого же макроса.
упрощенный макрос link{«text»,id} и полная версия link{«text»,id}img{id}, результат их работы будет таков
макрос номер 1:
<a href="link_id">text</a>
макрос номер 2:
<a href="link_id">text<img src="img_id"></a>
регулярное выражение для полной версии макроса
/link\{«(.*?)»,([0-9]+)?)\}img\{([0-9]+?)\}/
и соответственно для упрощенной
/link\{«(.*?)»,([0-9]+?)\}/
пример шаблона:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed arcu link{«lorem»,10}img{20}, semper id dictum sit amet, egestas a dui. Donec condimentum link{«gravida ullamcorper»,5}.
результат работы регулярного выражения для полной версии макроса lorem, 10, 20
результат работы для упрощенной: lorem»,10}img{20}, semper id dictum sit amet, egestas a dui. Donec condimentum link{«gravida ullamcorper, 5
Прямо скажем, не то что я ожидал увидеть. Пробовал разные варианты ограничить жадность квантификаторов, даже всякие магически пасы в виде ?!, ?!= и прочих, пока без просвета.
Опубликовано Июль 1, 2011 рубрики:
C#|Комментарии к записи regexp отключены
как интересно получить из этого
«123| 1.doc, 6433| (1,2,3).rtf, 8536| ytu.dat»
массив
string[] {«123| 1.doc»,»6433| (1,2,3).rtf»,»8536| ytu.dat»}
на ум пришла такая регулярка /(\d+?\|.+?),?/, но в лоб такая конструкция возвращает только \d+\|, оставляем .+, и выражение берет всю строку, что бы сделать с жадностью квантификатора.
upd:
решение как всегда оказалось намного проще 🙂
Regex regex = new Regex(",(?=s*\\d+\\|)");
var parts = regex.Split(files);
Опубликовано Май 28, 2011 рубрики:
SQL|Комментарии к записи задачка отключены
есть таблица данных (id, № страницы, № пользователя, флаг голосования).
пример таблицы:
нужно выбрать все записи по которым проголосовали все обозначенные в таблице пользователи.
вот эти:
для этой задачки подходит вот такой запрос:
SELECT DISTINCT c1.[page]
FROM [dbo].[table] as c1
LEFT JOIN [dbo].[table] as c2
ON c1.page = c2.page
WHERE c2.voite = 1
Опубликовано Май 19, 2011 рубрики:
SQL|Комментарии к записи декартово произведение отключены
mssql
SELECT t1.[Id] , t2.[Id]
FROM [dbo].[table1] as t1 CROSS JOIN [dbo].[table2] as t2;
для каждой записи из таблицы table1 сопоставляются все записи из таблицы table2
Опубликовано Март 14, 2011 рубрики:
PHP|Комментарии к записи regexp и парные скобки отключены
Из строки «The {World {is}} beautifull» нужно достать максимальную подстроку ограниченную парными скобками.
Решение:
$string="The {World {is}} beautifull";
if (preg_match("#\{((?>[^{}]+)|(?R))*\}#", $string,$m)){
print "matched: ".$m[0];
}
Опубликовано Март 13, 2011 рубрики:
PHP|Комментарии к записи REGex и экранированные символы отключены
Как-то появилась задача по написанию регэкспа, который выбирает из строки все, что заключено в кавычки, при этом надо учитывать, что внутри строки кавычки могут быть экранированы.
решение:
// сам regexp
// /"(?>\\"|.)*?"/
$pattern= '/"(?>\\"|.)*?"/';
$string = 'some "text \"word\""';
if (preg_match($pattern,$string)){
print "TRUE";
}