2017-03-22 2 views
-1

Ich habe eine Zeichenfolge wie unten .. Ich möchte nur alle Zahlen vor der ( bis das Zeichen beginnt zu extrahieren.Regulärer Ausdruck, um die Nummer vor der Klammer zu extrahieren

12XYXXX12345(XXYYZZ)

XXYY sind nur Platzhalter für Zeichen ..

ich die Daten vor der offenen Klammer extrahieren kann ( unten Ausdruck. Aber ich weiß nicht, wie ich die Zahlen allein extrahiere.

^[^\(]* 
+0

Nun, gerade jetzt, auch [ '\ d (? = \ W * \()'] (https://regex101.com/r/nuYATm/1) wird für Sie arbeiten Könnten Sie bitte angeben, welche Regex-Geschmack Sie verwenden? –

+1

Die Frage ist mir unklar.Sind XYXXX Platzhalter für mehr Ziffern? Wenn nicht, möchten Sie 12, 12345 oder 1212345 extrahiert? Auch gibt es immer 2 Zahlen durch ein einziges Wort geteilt, oder kann es sein '1x2xy3was auch immer (...'? –

+0

@ PeterA.Schneider Ich will nur 12345 .. XYXXX sind alle Zeichen –

Antwort

1
hive> select regexp_extract ('12XYXXX12345(XXYYZZ)','\\d+(?=\\()',0); 
OK 
12345 

ODER

hive> select regexp_extract ('12XYXXX12345(XXYYZZ)','(\\d+)\\(',1); 
OK 
12345 
+0

Haben Sie die Antwort gesehen? ? –

+0

ja. Ich werde versuchen und es als Antwort akzeptieren. Danke. –

0

var x = "12XYXXX12345(XXYYZZ)"; 
 
console.log(x.match(/^[^\(]*/)[0].match(/\d/g).join(""));

Der Code zuerst bekommt 12XYXXX12345 und führt dann eine regex Ziffern entsprechen und kombiniert dann alle Spiele.

+0

Ich benutze Regex in meiner Hive-Abfrage. So funktionieren die Match-Bedingungen nicht. Gibt es eine Möglichkeit, die Regex-Anfragen zu verschachteln? –

Verwandte Themen