Russian Qt Forum

Qt => Общие вопросы => Тема начата: maks от Август 16, 2009, 00:02



Название: регулярное выражения. Помогите составить.
Отправлено: maks от Август 16, 2009, 00:02
Надо разобрать строку использую регулярные выражения(QRegExp).

В строке в качестве разделителей используется : которые могут встречаться n число раз.
Есть ситуация когда в строке может оказаться \n  тогда надо левую часть не разбирать а разбирать только правую часть строки после \n как такое реализовать?

Не получается написать само регулярное выражения.
Помогите.


Название: Re: регулярное выражения. Помогите составить.
Отправлено: lit-uriy от Август 16, 2009, 12:00
ну вообще "\n" - это перевод строки, следовательно разбирать надо не каждую строку?


Название: Re: регулярное выражения. Помогите составить.
Отправлено: SLiDER от Август 16, 2009, 12:07
А чем Вас не устраивает вариант со сплитами ???
Код:
str.split(QLatin1Char('\n'))[1].split(QLatin1Char(':'))


Название: Re: регулярное выражения. Помогите составить.
Отправлено: maks от Август 16, 2009, 12:36
Цитировать
ну вообще "\n" - это перевод строки, следовательно разбирать надо не каждую строку?
Да надо разобрать только вторую строку.

Цитировать
А чем Вас не устраивает вариант со сплитами ???
Код:
str.split(QLatin1Char('\n'))[1].split(QLatin1Char(':'))

Задача стоит чтобы сделать через регулярные выражения.


Название: Re: регулярное выражения. Помогите составить.
Отправлено: Rcus от Август 16, 2009, 13:10
Код:
(?:.*\n)?([^:]*)(?::([^:]*))*
Как то примерно так, не проверял. Но решать такое через регулярки вместо сплита/автомата это изврат :)


Название: Re: регулярное выражения. Помогите составить.
Отправлено: maks от Август 16, 2009, 13:46
Не срабатывает.
В том случае если первой строки нету то склеивается начало и вторая часть разделенные :