2016-04-18 4 views
1

У меня есть проблема с регулярным выражением.Regex, match multiples char между двумя char

Текст:

alpha,beta,charlie,"delta delta,delta,",echo 

Требуемая мощность:

Я хочу, чтобы заменить , пробелом, если он находится внутри двойных кавычек " ".

alpha,beta,charlie,"delta delta delta ",echo 

Я попытался ".*,.*", но это соответствует всему тексту внутри двойных кавычек, а не только ,

Может кто-то помочь?

+3

Что вы регулярное выражение falvor/язык? – anubhava

+0

Не зная аромата регулярного выражения, невозможно дать лучший ответ или даже более или менее рабочий. –

ответ

0

То, что вы просите, сложно (или невозможно) сделать с одним регулярным выражением.

Я предлагаю сначала совместить все внутри кавычек через одно регулярное выражение, например "[^"]*", а затем просто перебирать совпадающие выходы на вашем языке программирования, заменяя все запятые пробелами.

0

Дайте попробовать на этот gnu решение:

gawk -F \" -v OFS=\" '{ 
for (i=2;i<=NF;i+=2) { 
    gsub(/,/," ",$i); 
} 
print; 
}' 

тест:

printf "alpha,beta,charlie,\"delta delta,delta,\",echo\n" | gawk -F \" -v OFS=\" '{ 
for (i=2;i<=NF;i+=2) { 
    gsub(/,/," ",$i); 
} 
print; 
}' 
alpha,beta,charlie,"delta delta delta ",echo 
Смежные вопросы