2016-04-18 15 views
1

Ich habe ein Problem mit Regex.Regex, multiples char zwischen zwei Char

Text:

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

Erforderliche Ausgabe:

Ich möchte die , durch ein Leerzeichen ersetzen, wenn es " " in doppelten Anführungszeichen ist.

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

Ich habe ".*,.*" versucht, aber das passt den gesamten Text in doppelten Anführungszeichen und nicht nur die ,

Kann jemand helfen?

+3

Was ist Ihre regex falvor/Sprache? – anubhava

+0

Ohne den Regex-Geschmack zu kennen, ist es unmöglich, die beste Antwort oder sogar eine mehr oder weniger funktionierende zu geben. –

Antwort

0

Was Sie fragen, ist schwer (oder unmöglich) mit einer einzigen Regex zu tun.

Ich würde vorschlagen, zuerst alles in den Anführungszeichen über eine Regex wie "[^"]*" und dann einfach iterieren über die übereinstimmenden Ausgaben in Ihrer Programmiersprache ersetzen alle Kommas mit Leerzeichen.

0

Probieren Sie diese gnu Lösung:

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

der Test:

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 
Verwandte Themen