2016-04-29 6 views
-1

ich mit mir folgenden Text haben,Wie erhalten Sie folgenden Text mit Regex-Muster?

File <a class='ub link' data-menu-identifier='files' data-url-identifier='/files/detail/n0tlz'>Medical bills & LTA.xlsx</a> was attached to the case by {updatedby} on {updatedon} 

Was ich brauche, ist, ich brauche regex, die mir geben ‚n0tlz‘ aus dem gegebenen Text. Bitte beachten Sie, dass dies nicht statisch ist, muss ich aus diesem Muster extrahieren.

Ich habe auf einer bestimmten Ebene erreicht, aber nicht bekommen, wie man erforderlichen Text bekommt;

ich habe: '/ files/detail/n0tlz' wo '/ files/detail/{code}' ist immer da, ich will nur Wert {code} in bestimmten Probe {Code} = n0tlz

// Extract The filecode 
        const string pattern = @"files\/detail\/(.*)'>"; 
        // Instantiate the regular expression object. 
        var r = new Regex(pattern, RegexOptions.IgnoreCase); 
        // Match the regular expression pattern against a text string. 
        var m = r.Match(fileUpdate.UpdateText); 

hier hat Wert:/files/detail/n0tlz '> aber ich will nur' n0tlz 'Ich fühle mich bin zu nah, nur ein letzter Schritt ist erforderlich, um Code-Wert zu erhalten.

+0

enthalten Warum Sie keine HTML/XML-Parser verwenden den Attributwert zu erhalten und verwenden nur 'Split' zu bekommen Der Wert, den Sie brauchen? –

+0

MÜSSEN Sie Regex verwenden? Weil etwas so einfach wie 'yourstring.Split ("/"). Last() 'würde für Sie bekommen – hometoast

+0

Ich muss es auf der Serverseite tun dies ist db's Spalte & im Arbeiten an Migration Aufgabe .. –

Antwort

0

Wenn data-url-identifier='/files/detail/n0tlz'> immer ein '> enthält, könnten Sie das als Trennzeichen verwenden. macht Ihre vorhandene files\/detail\/ in files\/detail\/ '>

nun den spezifischen Wert erfassen Sie eine einfache Capture-Gruppe (.*), die alle Zeichen zwischen Null und unbegrenzten Zeiten fangen können.

Die Kombination der 2 würde zu files\/detail\/(.*)'> führen.

bearbeiten

Aber diese m haben:/files/detail/n0tlz '> Ich will nur 'n0tlz' kann ich es bekommen?

Nun, ja. Oder um noch detaillierter zu sein, Sie haben es bereits!

Anstatt einen var zu verwenden, versuchen Sie, den Typ selbst zu definieren. In diesem Fall wäre das ein Match. Wenn man sich die Eigenschaften anschaut, sieht man, dass es viel mehr als nur das ganze Spiel enthält.

Gruppen werden Ihren Wert

+0

das ist richtig, aber kann ich Holen Sie sich direkt 'n0tlz' mit Regex? –

+0

Dies ist ein Regex-Muster, um den Wert zu erhalten. Kann direkt mit [Regex] verwendet werden (https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex%28v=vs.110%29.aspx) –

1
// Extract The filecode 
        const string pattern = @"files\/detail\/(.*)'>"; 
        // Instantiate the regular expression object. 
        var r = new Regex(pattern, RegexOptions.IgnoreCase); 
        // Match the regular expression pattern against a text string. 
        var m = r.Match(fileUpdate.UpdateText); 
        if (m.Success && m.Groups.Count == 2) 
        { 
         m.Groups[1].Value; // This is the expected result 
        } 
+0

Ich habe einige Klarstellungen hinzugefügt, aber es scheint, du hast es schon selbst geschafft;) –

Verwandte Themen