So Entfernen Sie die nicht-alpha-numerischen oder nicht-numerischen Zeichen mit Hive REGEXP_EXTRACT () - Funktion
Ich habe versucht, herauszufinden, wie zu entfernen mehrere nicht alphanumerische oder nicht-alphanumerische Zeichen, oder nur die Rückkehr numerische Zeichen aus einem string. Ich habe versucht:
SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name
Aber es kehrt '7', nicht '789'.
Habe ich auch versucht zu entfernen, die nicht-numerischen Zeichen, die mit NICHT ÜBEREINSTIMMEN syntax ^((?!regexp).)*$:
SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii
Kann regexp_extract Rückkehr mehrere übereinstimmungen? Was ich wirklich versuche zu tun ist, reinigen Sie meine Daten enthalten nur Ziffern oder alphanumerischen Zeichen. Dies scheint zu helfen, entfernen Sie schlechte Zeichen, aber es ist nicht eine Reihe von Zeichen, wie [0-9]. regexp_replace(string, '�',")
EDIT: Die folgende Abfrage konnte zurück '7789', das ist genau das, was ich suchte.
SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe auch diese hive regexp_extract Verrücktheit
Ich denke regex_extract wird nur die Nummer der Gruppe angegeben, in der 3. parameter.
regex_extract
scheint zu funktionieren nur auf einer Linie, und beenden Sie dann.Ich weiß nicht, über die ersetzen-Pendant.
Funktioniert auf non-alphanum Daten, wenn Sie gefüttert es so etwas wie dieses
REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')
Auch, für Auszug, siehe den link oben und Sie können es ändern, um
regexp_extract('X789', '[0-9]+', 0)
für mehrere Nummern.oder
regexp_extract('XYZ789', '[a-zA-Z]+', 0)
für mehrere alpha.regexp_replace("7(-X78T9)RMM", "[^0-9]+", "")
zurückkehren sollte7789
. Die regex enthält einen quantifizierten (+) negativ ([ ^ ]) - Klasse, also nicht eine Ziffer zwischen 0-9. Es wird Global ersetzen Sie alle nicht-Ziffer-Zeichen. Dies ist laut den docs. Ich kann es nicht testen.