Frage

So etwas wie .//div[@id='foo\d+] zu erfassen div-Tags mit id='foo123'.

Ich bin mit .NET, wenn es ankommt.

War es hilfreich?

Lösung

Wie andere Antworten festgestellt haben, XPath 1.0 unterstützt keine reguläre Ausdrücke .

Trotzdem haben Sie folgende Optionen :

.//div
   [starts-with(@id, 'foo') 
  and 
   'foo' = translate(@id, '0123456789', '')
  and
   string-length(@id) > 3   
   ]

Andere Tipps

XPath 2.0 hat einige Funktionen, die reguläre Ausdrücke unterstützen. matches(), replace(), tokenize()

In XPath 1.0 gibt es keine regex Unterstützung.

Für .NET können Sie die XPath-Engine in Saxon.Net verwenden, um XPath 2.0-Unterstützung zu haben.

Also, wenn die XPath 2.0-Engine in Saxon.NET verwenden, Ihr Beispiel würde sich an:. .//div[matches(@id,'foo\d+')]

In .NET Sie haben die Möglichkeit, Ihre benutzerdefinierten Klassen zugreifen (und daher regex, wenn Sie es entsprechend für Ihre Bedürfnisse codieren können) über Erweiterungsobjekte.

hier .

Ich wollte auch dies so tun, mein eigenen Grund XPath-Modul .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top