.NET - Регулярное выражение

Аватара пользователя
LilLoco

.NET - Регулярное выражение

Сообщение LilLoco »

Добрый день.



Есть Kml файл вида:

Код: Выделить всё

<Placemark>

    <name>сельское поселение</name>

    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>

    <ExtendedData><SchemaData schemaUrl="#boundary">

        <SimpleData name="Name">сельское поселение</SimpleData>

        <SimpleData name="OSM_ID">-1848657</SimpleData>

        <SimpleData name="ADMIN_LVL">8</SimpleData>

    </SchemaData></ExtendedData>

      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>35.4913424,56.2869627 35.4866097,56.2876573 35.4835114,56.2879249 35.4866098,56.2876573 35.4913424,56.2869627</coordinates></LinearRing></outerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>35.389971680241118,56.234632701458445 35.3899716,56.2346327 35.3854169,56.2349689 35.389971680241118,56.234632701458445</coordinates></LinearRing></outerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>35.37138496178531,56.235423204282533 35.3713849,56.2354232 35.3704766,56.235525 35.37138496178531,56.235423204282533</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry>

  </Placemark>

ну и так далее...


Нужно написать регулярное выражение чтобы найти все такие блоки. С регулярными выражениями очень туго Изображение Нужно вытащить все данные (Name, OSM_ID, ADMIN_LVL, Coordinates). Но на данный момент я не могу даже вытащить только .



Пробовал так:



Код:

Код: Выделить всё

string textOfFile = System.IO.File.ReadAllText(@"boundary.kml");
Regex r = new Regex(@"<Placemark>\d\D*</Placemark>");
MatchCollection matches = r.Matches(textOfFile);

но ничего не находит.

Попробовал немного иначе:



Код:

Код: Выделить всё

Regex r = new Regex(@"<Placemark>([\s\S]*)</Placemark>");

Находит одно совпадение! Я так понимаю между первым открытием тега и последним закрытием!



Прошу вашей помощи, подскажите как сделать на первом уровне, далее, думаю, сам разберусь.



Спасибо!
Аватара пользователя
mrcnn

Re: .NET - Регулярное выражение

Сообщение mrcnn »

Код:

Код: Выделить всё

Regex(@".*");

Такой вариант срабатывает?
Аватара пользователя
Iska

Re: .NET - Регулярное выражение

Сообщение Iska »

LilLoco, если это фактически xml — почему бы не работать с ним соответствующим способом?
Аватара пользователя
mrcnn

Re: .NET - Регулярное выражение

Сообщение mrcnn »

LilLoco, если это фактически xml — почему бы не работать с ним соответствующим способом?
Аватара пользователя
pva

Re: .NET - Регулярное выражение

Сообщение pva »

Цитата pva:



вариант mrcnn + включи multiline (ели включается)
.NET - Регулярное выражение




Неа, не работает. Ни одного не находит.


Цитата pva:



найти 2 тега (открывающий и закрывающий после него).
.NET - Регулярное выражение




Имеете ввиду, найти их позиции в тексте, и вытаскивать текст между ними?


Цитата Iska:



если это фактически xml — почему бы не работать с ним соответствующим способом?
.NET - Регулярное выражение




В блоке, где описываются координаты, бывают разные виды (), поэтому думал будет проще находить регулярными выражениями, и, в зависимости от того какие данные, обрабатывать.
Аватара пользователя
LilLoco

Re: .NET - Регулярное выражение

Сообщение LilLoco »

LilLoco, я поддерживаю Iska. Не изобретай велосипед, посмотри инструментарий работы с xml, проще будет.
Аватара пользователя
lxa85

Re: .NET - Регулярное выражение

Сообщение lxa85 »

LilLoco, я поддерживаю Iska. Не изобретай велосипед, посмотри инструментарий работы с xml, проще будет.
Аватара пользователя
LilLoco

Re: .NET - Регулярное выражение

Сообщение LilLoco »

lxa85, Iska, Спасибо. Буду разбираться.
Аватара пользователя
Delirium

Re: .NET - Регулярное выражение

Сообщение Delirium »

Согласен с Iska, .Net дает большие возможности по работе с XML и не надо будет мучаться.
Аватара пользователя
LilLoco

Re: .NET - Регулярное выражение

Сообщение LilLoco »

Добрый день.

И снова они...регулярные выражения...



Подскажите как составить регулярное выражение для выбора списка элементов так чтобы текст начинался и заканчивался только цифрой, причем цифра может быть всего одна. В середине строки разрешить использовать только цифры, запятую, тире.



Спасибо.

Уж никак не могу подружиться с регулярными выражениями Изображение
Ответить

Вернуться в «Программирование и базы данных»