Помогите с регэкспом
От: x64 Россия  
Дата: 10.07.10 22:48
Оценка:
Привет.
Что-то я туплю.
Есть вот такая строчка:

[-]some text[-]yet another some text


Концом элемента здесь является либо конец строки (или всего текста), либо начало нового элемента. Нужно составить регэкс, в результате обработки которого на данном примере на выходе было бы два матча, в каждом из которых одна группа, т.е. как-то так:

Matches [0].Groups [1].Value = "some text"
Matches [1].Groups [1].Value = "yet another some text"


Я вот эти выражения пробовал:

\[\-\](.*?)(?<!\[\-\])
\[\-\](?!\[\-\])(.*?)


Они находят только начало каждого элемента. Что тут не так?

P.S.
Да, совсем забыл, сделать это нужно в общем виде, а не конкретно для этого примера, т.е. таких последовательностей может быть бесконечно много по всему тексту.
Re: Помогите с регэкспом
От: Azzw  
Дата: 10.07.10 23:48
Оценка: -1
Как насчет string.Split?
Re: Помогите с регэкспом
От: Azzw  
Дата: 10.07.10 23:57
Оценка:
можно конечно и так \[\-\]([^\[\-\]]*)
Re[2]: Помогите с регэкспом
От: x64 Россия  
Дата: 11.07.10 00:26
Оценка:
A>можно конечно и так \[\-\]([^\[\-\]]*)

Нельзя.
Re: Помогите с регэкспом
От: Аноним  
Дата: 11.07.10 05:59
Оценка: 10 (1)
Здравствуйте, x64, Вы писали:

x64>

x64>[-]some text[-]yet another some text

x64>Концом элемента здесь является либо конец строки (или всего текста), либо начало нового элемента.

Я бы так и записал:
\[-\](.*?)(?=\[-\]|$)

Т.е. "начинается с группы символов, после совпадения должна идти или группа символов или конец строки".
Re: Помогите с регэкспом
От: Аноним  
Дата: 11.07.10 08:25
Оценка:
x64>[-]some text[-]yet another some text
(\[\-\])[^[\1]*]*

[-]some text
[-]yet another some text
Re[2]: Помогите с регэкспом
От: x64 Россия  
Дата: 11.07.10 12:46
Оценка:
А>Я бы так и записал:

Спасибо, твой вариант работает, но немного грязновато, особенно в случае Multiline, лучше так:

\[-\](.*?)(?=\[-\]|[\r\n]{1,2})

Re[2]: Помогите с регэкспом
От: x64 Россия  
Дата: 11.07.10 12:49
Оценка:
x64>>[-]some text[-]yet another some text
А>(\[\-\])[^[\1]*]*

Этот регэкс у меня находит только сами маркеры элементов [-], и ещё левые символы в случае, если текст на входе многостроковый.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.