Привет.
Что-то я туплю.
Есть вот такая строчка:
[-]some text[-]yet another some text
Концом элемента здесь является либо конец строки (или всего текста), либо начало нового элемента. Нужно составить регэкс, в результате обработки которого на данном примере на выходе было бы два матча, в каждом из которых одна группа, т.е. как-то так:
Matches [0].Groups [1].Value = "some text"
Matches [1].Groups [1].Value = "yet another some text"
Я вот эти выражения пробовал:
\[\-\](.*?)(?<!\[\-\])
\[\-\](?!\[\-\])(.*?)
Они находят только начало каждого элемента. Что тут не так?
P.S.
Да, совсем забыл, сделать это нужно в общем виде, а не конкретно для этого примера, т.е. таких последовательностей может быть бесконечно много по всему тексту.
Здравствуйте, x64, Вы писали:
x64>x64>[-]some text[-]yet another some text
x64>Концом элемента здесь является либо конец строки (или всего текста), либо начало нового элемента.
Я бы так и записал:
\[-\](.*?)(?=\[-\]|$)
Т.е. "начинается с группы символов, после совпадения должна идти или группа символов или конец строки".
А>Я бы так и записал:
Спасибо, твой вариант работает, но немного грязновато, особенно в случае Multiline, лучше так:
\[-\](.*?)(?=\[-\]|[\r\n]{1,2})