2009-11-16 9 views
0

Je regex qui se lit comme suit:S'il vous plaît expliquer regex

@"<img\s*[^>]*>(?:\s*?</img>)? 

Quelqu'un peut-il expliquer s'il vous plaît cette partie: (: \ s *?)?

Qu'est-ce que c'est?

+6

avez-vous essayé de télécharger l'un des outils gratuits (comme 3.0 Expresso) qui explique regex? –

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Amarghosh

Répondre

9

match, mais ne capture pas un nombre d'espaces suivi d'une balise d'image proche, zéro ou une fois:

(?: = match but don't capture 

\s*? = any number of whitespace (not greedy) 

</img> = close image tag 

)? = zero or one times 

:)

1

(?:\s*?) choisit une des espaces, si elle existe, après la tag d'image. Le ?: au début indique au moteur de regex de ne pas capturer ce groupe (ce qui signifie qu'il ne sera pas retourné dans les matches tableau)

0

groupe non-capture d'un nombre quelconque de caractères blancs, suivi d'une balise img fermeture

0

L'expression entière capturera toutes les balises <img> qui ont les balises </img> correspondantes (mais ne captureront pas les balises de fermeture). Il ne capture pas les balises de fermeture, car la syntaxe (?:) signifie "faire correspondre mais ne pas capturer".

Certaines restrictions qui font partie de cette regex:

  1. Le \s* dans la balise d'ouverture est redondant, car [^>]* capturera cela aussi
  2. que des espaces est autorisée entre les balises d'ouverture et de fermeture

Quelques exemples:

  • <img> sera pas match de
  • <img></img> correspondra, mais seulement capturer <img>
  • <img attr="123"></img> correspondra, mais seulement capturer <img attr="123">
  • <imgabc></img> sera pas match de
  • <img> </img> correspondra, mais seulement capturer <img>
  • <img>ab</img> va pas match

Je recommande fortement l'expression régulière Designer disponible gratuitement à www.radsoftware.com.au pour les tests regexs

+0

incorrect - le? après que le groupe final ne soit pas gourmand, des choses comme vont correspondre –

Questions connexes