2010-11-26 4 views
1

pourrait me montrer someon s'il vous plaît une expression régulière qui correspond tout comme: image.php type = regcheck & imagehash=3d600fe2ad3c87c9b22ade7e58ef1c48rapide Regex Question

cette chaîne est contenue dans une source de la page .. merci. :)

edit: voici l'endroit où il se trouve:

<img id="imagereg" src="image.php?type=regcheck&amp;imagehash=3d600fe2ad3c87c9b22ade7e58ef1c48" alt="Registration Image" border="0" height="61" width="201"> 
+3

Qu'est-ce que vous avez à ce jour? Quel moteur/environnement utilisez-vous? Attendez-vous que les gens fassent votre travail? – Lucero

+2

1. Ne pas analyser (X | X? HT)? ML avec regex. Utilisez un analyseur de travail. Si ça vaut le coup, ça vous permet aussi de gratter la page beaucoup plus facilement. 2. Vos spécifications sont inexistantes. '. *' correspond à votre exemple, mais ce n'est pas ce que vous voulez. 3. Voir Lucero. – delnan

+0

quelle partie de la chaîne est variable?quelle partie voulez-vous sauvegarder ou changer? –

Répondre

3

Si le hachage est la seule chose qui varie, vous le remplacer par un .* et échapper à toute . et ? existant avec \ car il est un caractère spécial regex ... donc, quelque chose comme:

image\.php\?type=regcheck&imagehash=.* 

notez également que .* peut être « gourmand » et prendre trop de l'entrée - Je ne sais pas ce que vous êtes avec l'analyse syntaxique regex (som partie électronique du texte aiderait), mais peut-être un seul espace après la star ferait l'affaire ...

modifier: D'après votre commentaire, l'expression rationnelle se résume à:

"image\.php\?type=regcheck&imagehash=.*" 

avec le " appartenant à l'intérieur l'expression rationnelle, comme dans:

string regexExpression = "\"image\.php\?type=regcheck&imagehash=.*\"" 
+0

Échappez également au '?'. – delnan

+0

ont également besoin d'échapper à la? –

+0

oui, déjà réparé :) merci – veljkoz

2

Je pense que vous avez besoin d'un analyseur pour cela, mais puisque vous ne spécifiez pas une langue, voici une expression rationnelle MatC h ça.

Je ne suis pas sûr si vous essayez de faire correspondre le imagehash seulement ou la chaîne entière sous src.

donc je suppose, que vous essayez de faire correspondre la chaîne sous src:

<img id="imagereg" src="(.*?)" alt="Registration Image" border="0" height="61" width="201"> 

Le regex ci-dessus correspondra à la valeur src avec les alt, border, etc. attributs. Mais si vous voulez faire correspondre toussrc valeurs tousimg tags:

<img.*?src="(.*?)".*?> 

En Python, vous pouvez faire un m = re.search(..) et retourner le groupe par m.group(1). En Perl $source =~/.. / retour du groupe de match: $1

Pour l'esperluette, mieux de le remplacer, par exemple en Perl:

$string =~ s/&amp;/&/g; 

Python:

string.replace('&amp;', '&') 
+0

merci. :) mais j'ai spécifié une langue - C# et oui, je ne veux pas utiliser un analyseur juste pour ce match. – Omegavirus

+0

@OmegaVirus: Pour HTML limité, connu, vous n'avez pas vraiment besoin d'un analyseur. Pour de tels problèmes, une bonne regex peut fonctionner très bien. Ce n'est que lorsque vous commencez à construire dans toutes les éventualités générales pour la manipulation de HTML inconnu, le compromis en vaut la peine. – tchrist

+2

Malheureusement, je n'ai pas vu de 'C#' dans votre question, vous pourriez vouloir le re-taguer. :) – Ruel