2009-07-09 10 views
0
Regualar expression: <img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*> 

Cela fonctionne correctement lorsque 'src' est en minuscules et gère les guillemets simples et doubles. Je voudrais que cette expression renverrait aussi pour suivre les données de testComment faire pour que cette expression régulière ne soit pas sensible à la casse (recherche d'une balise src)

1. <html><img src ="kk.gif" alt="text"/></html> 
2. <html><img Src ="kk.gif" alt="text"/></html> 
3. <html><img sRC ="kk.gif" alt="text"/></html> (any charcter in 'src' can be uppercase/lowercase) 
4. <html><img SRC ="kk.gif" alt="text"/></html> 
5. <html><img src ='kk.gif' alt="text"/></html> 

Répondre

7

Créer le motif avec le drapeau CASE_INSENSITIVE. Voir Pattern.compile(String, int). Cela affectera toute la chaîne, ce qui signifie également img.

Ou la manière bon marché, changer src à [Ss][Rr][Cc]. Cela affectera simplement la partie src.

+0

Merci; juste curieux; voulez-vous dire efficace/plus rapide quand vous dites "façon pas cher" ici? –

+0

Je voulais dire que c'était le moyen le moins coûteux. – lavinio

+0

Compilez-le une fois et réutilisez-le. plus efficace/plus rapide. :) –

0

Jetez un oeil here

Vous devez définir la casse dans le constructeur de modèle.

2

Il me semble que si vous voulez traiter le HTML, la meilleure façon de procéder est d'utiliser un vrai analyseur HTML.

Bien que je ne suis pas familier avec Java, il semble y avoir un certain nombre de choix: Open Source HTML Parsers in Java. Cela vous permettra de traiter des cas comme un autre attribut devant le src et incluant le caractère '>', qui est un code HTML valide, ou l'attribut src incluant une citation, et probablement quelques autres tricheries improbables mais possibles .

0

Du haut de ma tête:
Vous pourriez remplacer le src avec [S|s][R|r][C|c] si vous ne souhaitez que la casse appliquée à src. "(? I)"

KT

+1

Sans les | réels, bien sûr. :) – lavinio

1

Vous pouvez définir l'expression au cas insesitve utilisant

Regular expression: (?i)<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*> 

pour seulement une partie de l'expression, l'utilisation "(i: partie)"

Regular expression: <img[^>]+(?i:src)\s*=\s*['"]([^'"]+)['"][^>]*> 

ou tout simplement le faire en utilisant le deuxième argument de Pattern.compile

Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 

[]]

Questions connexes