2017-01-23 4 views
2

Ich habe eine reguläre Ausdruck Anforderung für eine Telefonwähltaste, von wo ich Agentenname, Benutzername, eine Telefonnummer analysieren muss.Regulärer Ausdruck wie aus Wert Agent und Benutzername und Nummer?

Beispiel Zufallsbenutzereingaben wie folgt:

bt_linux_root_0012127773456

bt_windows_root_0012127773456

bt_randomstring_randomstringnumber_0012127773456

I nur Ausdruck verwenden, kann den Eingabewert parsen, der erwartete Ausgang ist, wie folgt (^bt(\d+)$):

$1 =linux

$2 =root

$3 =0012127773456

Wie kann man wie das Parsen nur durch regex?

+1

Vielleicht ['^ bt_ ([^ _] +) _ ([^ _] +) _ (\ d +) $'] (https://regex101.com/r/zRRAtq/1)? –

+0

Kannst du es ausdiskutieren, ob diese "bt_randomstring_randomstringnumber_0012127773456" in 3 gefangenen Gruppen passt, das ist alles? – RomanPerekhrest

+0

JA - 3 erfasste Gruppen haben – YumYumYum

Antwort

2

Dies ist Ihr Muster: ^bt_(\w+?)_(\w+?)_(\d+)$

Es verfügt über 3 capturing parenthesis. Jeder fängt den gewünschten Teil ein.

Ich habe den ? - nicht gierigen Quantifizierer verwendet, so dass die Wortsuche am ersten Unterstrich endet, den es trifft. \w sucht nach Buchstaben, Zahlen und Unterstrichen, und ich möchte nicht, dass die Unterstreichung als Teil des Wortes verwendet wird.

+1

'^ bt _ (.-) _ (.-) _ (.-) $' funktioniert auch gut. – lhf

Verwandte Themen