2013-11-26 2 views
2

У меня есть строка с префиксом, за которой следует список хотя бы одного, возможно, пустого суффикса. Сами суффиксы имеют префикс двоеточия. Ни префикс, ни суффикс не должны содержать ни одного двоеточия.Итерация над списком в замене регулярного выражения

Пример (1) для одного пустого суффикса:

x: 

Пример (2) для двух не пустых суффиксов ("а" и "б") и один пустой суффикс:

x:a::b 

regular expression для этого шаблон:

([^:]+)(:([^:]*))* 

Первый матч захватывает префикс и (3 + 2n) -й матч захватывает су ffixes (n = [0,1,2, ...]).

В моей замене я хотел бы префикс каждого суффикса. Пример (1) следует производить:

x 

И пример (2) следует производить:

xa 
x 
xb 

Как я должен указать выражение замены?

Моя проблема в том, что первая замена ест префикс. И после этого вторая замена больше не видит префикса. Я должен сохранить префикс для оставшихся замен. Как это может быть сделано?

+0

Я не понимаю: «В моей замене я хотел бы префикс каждого суффикса» - префикс каждого суффикса с чем? – Richard

+0

@Richard В первом предложении написано: «У меня есть строка с префиксом, следующий за ...». В примере x - префикс. – ceving

+1

Какой вкус регулярного выражения? Какой язык или инструменты? – Toto

ответ

1

Я думаю, что сначала извлечу префикс, а затем сделаю вторую замену. Это упростит чтение кода, и в этот момент его следует легко заменить.

+0

Насколько я понимаю [Ant's tokenfilter] (http://ant.apache.org/manual/Types/filterchain.html#tokenfilter) не имеет памяти для хранения результата первого совпадения. – ceving

+0

Я согласен с Кивели здесь. Я не вижу способа указать шаблон замены при захвате префикса. – Richard

Смежные вопросы