2009-04-06 13 views
1
  1 <span class='Txt9Gray'>Decisions (</span> 

J'essaie de récupérer le 1 à partir de cette chaîne. Avant le 1, il y a un autre span, mais je ne peux pas l'utiliser comme marqueur car il peut changer de page en page. Existe-t-il une expression regex pouvant simplement saisir le 1?Un moyen de faire correspondre RegEx à un numéro sans balise de préfixe?

Le mot Decisions existera toujours. C'est mon principal moyen de trouver cette ligne. Voici ce que j'ai essayé en vain:

 strRegex.Append("(?<strDecisionWins>[^<]+)[\s]*? 
    <span class='[\s\w\W]*'>\bDecisions\b \([\s\w\W]*?</span>") 

Cela n'arrête pas de saisir le spans avant le 1 réel. La ligne complète contenant ce qui précède est la suivante:

<span class='Txt9Gray'>(T)KOs (</span> 66.67 <span class='Txt9Gray'>%) </span> <br /> 1 <span class='Txt9Gray'>Decisions (</span> 33.33 <span class='Txt9Gray'>%) </span> <br /> 

Le problème est que la correspondance correspond au tout début, à la place de la pièce.

+0

À quoi ressemble toute la ligne? –

+0

(T) KOs ( 66,67 %)
1 Décisions ( 33,33 %
- Le problème est que la correspondance correspond au tout début de ce que je viens de poster, au lieu de la pièce unique. – jlrolin

+0

J'ai modifié votre commentaire dans la question afin que tout le monde puisse le voir sans avoir à lire les commentaires. – Eddie

Répondre

1

Que diriez-vous:

\d+(?=\s*\<[^\>]+\>[^\<]*\bDecisions\b) 
\d+(?=\s*<[^>]+>[^<]*\bDecisions\b) 

Cela ne choisirait 1 (et rien d'autre)

La deuxième forme est pour le processeur regex qui n'a pas besoin d'échapper < et >.

L'expression (?=...) garanties préanalyse pour sélectionner un numéro \d+ suivi d'un élément() contenant un texte (ce qui signifie pas d'ouverture « < »: [^<]*), qui comprend le mot décisions.

La technique d'anticipation peut être combiné avec d'autres expressions rationnelles comme:

\s\d(?=\s*\<[^\>]+class\s*=\s*'Txt9Gray'[^\>]*\>) 
\s\d(?=\s*\<[^>]+class\s*=\s*'Txt9Gray'[^>]*>) 

pourrait saisir un chiffre unique (à condition qu'il en résulte un espace), suivi d'un élément contenant l'attribut « class='Txt9Gra y » »

+0

+1 mais il semble que s'échapper du < & > n'est pas nécessaire (il n'est même pas supporté). –

+0

@Lieven: bon point: je propose maintenant les deux formes – VonC

Questions connexes