2010-10-24 7 views
2

J'essaie de vérifier si une chaîne se termine par "@quelque chose" et d'en extraire "quelque chose" si c'est le cas. Par exemple, j'essaie de faire quelque chose comme ceci:Comment vérifier et extraire une chaîne via RegEx?

string temp = "//something//img/@src" 
if (temp ends with @xxx) 
{ 
    string extracted = (get "src"); 
    ... 
} 
else 
{ 
    ... 
} 

Comment puis-je accomplir cela?

Répondre

1

De vos commentaires sur mon autre réponse, il semble que vous avez besoin est quelque chose comme ceci:

string temp = "//something//img/@src"; 
var match = Regex.Match(tmp, @"/@([\w]+)$", RegexOptions.RightToLeft); 
if (match.Success) 
{ 
    string extracted = match.Groups[1].Value; 
    ... 
} 
else 
{ 
    ... 
} 
0

Effectuez les opérations suivantes

var match = Regex.Match(tmp, @".*@(.*)$"); 
if (match.Success) { 
    var extracted = match.Groups[1].Value; 
    ... 

L'astuce ici est le () dans le regex. Cela regroupe la correspondance finale dans un groupe sans nom. Cette correspondance peut ensuite être accessible via le membre Groups de la variable Correspondance par index. C'est le premier groupe donc l'index est 1

+0

Vos paramètres pour Regex.Match sont inversés. – spender

+0

regex plus simple et probablement plus efficace pour les longues chaînes d'entrée: 'Regex.Match (tmp, @" @ (. *?) $ ", RegexOptions.RightToLeft)' – Timwi

+0

@spender, merci corrigé – JaredPar

1

N'utilisez pas une expression régulière pour ça, ça n'en vaut pas la peine.

string temp = "//something//img/@src" 
int pos = temp.LastIndexOf('@'); 
if (pos != -1) 
{ 
    string extracted = temp.Substring(pos+1); 
    ... 
} 
else 
{ 
    ... 
} 
+0

Probablement la bonne réponse! ;) – spender

+0

Est-ce que cela fonctionnera pour quelque chose comme ceci: // div [@ id = 'grand_image_display'] // img [@ class = 'photo']/@ src (@ signes peuvent être au milieu, mais je veux seulement vérifier si c'est à la fin comme "/ @ xxx" – TruMan1

+0

@ TruMan1: Bien sûr, pourquoi pensez-vous que j'ai utilisé 'LastIndexOf'? – Timwi

Questions connexes