RegexOptions

25 мая 2011 г. | | |

Есть файл с содержимым вида

<Book>
   <Page number='1'><![CDATA[line1
                                line2
                                line3]]>
   </Page>
   <Page number='2'><![CDATA[line1]]>

   </Page>
</Book>


Нужно распарсить содержимое через RegExpr. Вроде ничего сложного. Тест для класса PageParser должен срабатывать:

//PageParser
class PagePaerser
{
  public static IList<Page> Parse(string xml)
  {
     IList<Page> pages = new List<Page>();
     string pattern = "<Page number='(?<number>\\d*?)'><\\!\\[CDATA\\[(?<content>.*?)\\]\\]><\\/Page>";
     var matches = Regex.Matches(xml, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
     if (matches.Count>0)
     {
        foreach(Match match in matches)
        {
            pages.Add(new Page()
            {
              content = match.Groups["content"].Captures[0].Value,
              number = int.Parse(match.Groups["number"].Captures[0].Value)
           });
        }
    }
    return pages;
  }
}


[TestMethod]
public void ParseMethod_ListOfPages_Test()
{
   var parsed_pages = PageParser.Parse(@"
<Book>
      <Page number='1'><![CDATA[line1
                                  line2
                                  line3]]>
      </Page>
      <Page number='2'><![CDATA[line1]]>

      </Page>
   </Book>

");
   Assert.AreEqual(2, parsed_pages.Count);
}

Но тест не срабатывает. Дело в том, что в RegExpr для обработки multiline-строк, нужно вместо флага RegexOptions.Multiline устанавливать RegexOptions.Singleline, который меняет режим символа "." на улавливание совпадений со всеми символами, а не всех символов, кроме новой строки (\n)

Coding drunk

24 мая 2011 г. | | |

Объектные NoSql базы для .Net

18 мая 2011 г. | | |

Небольшой обзор объектных БД под .Net. В обзор попали Eloquera, STSdb, Siaqodb, Ninja Database Lite.
Ссылка

dotPeek - бесплатный декомпилятор от JetBrains

17 мая 2011 г. | | |

На замену .NetReflector, который стал платным, компания JetBrains выпустила свой бесплатный декомпилятор dotPeek, который умеет
 - декомпилировать сборки .Net всех версий (1-4) в C#
- делать навигацию по коду (такую же как и в ReSharper) и понимает клавиатурные шорткаты,  аналогичные ReSharper’у
- делать подсветку синтаксиса, фолдинг, и в целом предоставлять experience, аналогичный Visual Studio

Детальный обзор dotPeek
Скачать dotPeek