2016-04-13 8 views
1

Um von "a b" zu "a b"in KDB +/Q

ssr["a   b";"[ ]+";" "] 

scheint nicht zu funktionieren. Danke!

Antwort

2

Sie können das Folgende verwenden, das jedes sich wiederholende Leerzeichen als ein Paar behandelt, dann mit "over", "ersetzt" diese durch ein einzelnes Leerzeichen.

q)x:"This   is a test" 

q)(" "sv" "vs)/[x] 

"This is a test" 
+0

Ziemlich ordentlich! Vielen Dank! Ist es jedoch nicht möglich, Regex in Q zu verwenden? Ich kann das einfach nicht zum Laufen bringen und habe möglicherweise kompliziertere Regeln. Danke nochmal. – iwbabn

+0

Möglicherweise müssen Sie eine externe Bibliothek importieren, da q nur grundlegende Operationen unterstützt (*,? Und []) Werfen Sie einen Blick auf http://qopotam.us/?p=pcre & http: //thesweeheng.wordpress .com/2008/07/14/Reguläre Ausdrücke-für-Q / –

0

Es ist möglich, diese effizient zu nutzen vs und sv mehr zu tun, dann. Unter Verwendung des Adverb each-prior ':

{x where not(and':)null x}"This   is a test" 
"This is a test" 

Alternative Sie ssr mit dem Adverb über / um verwenden, können kontinuierlich Blöcke von zwei Räumen zu entfernen:

ssr[;" ";" "]/["This   is a test"] 
"This is a test" 

Das Beispiel, das Sie aufgrund der begrenzten regex Optionen nicht zur Verfügung gestellt verfügbar Unter Verwendung von + in dieser Sequenz ist "[ ]+" ein Beispiel für eine Operation, die nicht unterstützt wird. Sie können mehr über regex in q auf dem kx Wiki lesen.