Это строка из конфигурации Automapping NHibernate. Интересно, что он делает.Что делает это регулярное выражение?
return string.Format("{0}_", Regex.Replace(member.Name, "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1_").ToUpper());
Это строка из конфигурации Automapping NHibernate. Интересно, что он делает.Что делает это регулярное выражение?
return string.Format("{0}_", Regex.Replace(member.Name, "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1_").ToUpper());
Позволяет разбить его:
([a-z](?=[A-Z])
Первый раздел соответствует любому прописной символ, который заканчивается в верхнем регистре символ
|[A-Z](?=[A-Z][a-z]))
Или любой символ верхнего регистра, который заканчивается на верхний, а затем нижний регистр
Например, это будет соответствовать
AAB с первым 'A', являющейся матч или
аВ
с 'а' будучи матча.
Регулярное выражение использует http://www.regular-expressions.info/lookaround.html
Хорошо, давайте разберем его.
//This is the start
([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))
[a-z](?=[A-Z]) //this means to match one lower case a-z followed by an uppercase A-Z
| //or
[A-Z](?=[A-Z][a-z]) //One uppercase A-Z followed by one uppercase and one lowercase a-z
//The replace
$1_ //Replace the match with "the match plus underscore".
//aBxx would become a_Bxx and ABcxx would be A_Bcxx
Image http://f.cl.ly/items/3H2w3k0m1k03072h2s0y/orreMBA%202013-08-21%20kl.%2010.37.18.PNG
Какую программу вы использовали для создания этой схемы? – wtf
andern - http://www.regexper.com/ – Martyn
Это отличный инструмент для изучения/визуализации regexp's: [Regexper.com] (http://www.regexper.com) –