2009-12-10 7 views
1

Pouvez-vous m'expliquer quelle est la signification de cette expression régulière? Quelle serait la chaîne qui correspond à cette expression.C# Expression régulière

Regex(@"/Type\s*/Page[^s]"); 

quoi est le symbole @? Merci d'avance.

Veuillez fournir une explication complète. Ce qui serait la chaîne qui correspond à cette expression.

+0

@ signifie une chaîne mot pour mot. Cela signifie que les séquences d'échappement ne fonctionnent pas, ce qui est utile avec les expressions régulières. – Reshure

Répondre

6

Le symbole @ désigne un verbatim string literal:

A se compose de chaîne littérale mot à mot un caractère @ suivi d'un double guillemet , zéro ou plus caractères, et un guillemet de fermeture caractère. Un exemple simple est @ "bonjour". Dans une chaîne textuelle verbatim , les caractères entre les délimiteurs sont interprétés textuellement, la seule exception étant une séquence d'échappement de devis . En particulier, séquences d'échappement simples et hexadécimal et Unicode échapper séquences ne sont pas traitées dans littéraux littéraux chaîne. Un littéral littéral peut couvrir plusieurs lignes .

Quant à l'expression régulière, il se décompose comme suit:

/Typecorrespondent à cette chaîne exactement
\s*correspondent tout de caractère d'espacement zéro fois ou plus
/Pagecorrespondent à cette chaîne exactement
[^s]correspond à tout caractère qui ne sont pas « s »

+0

Expresso ainsi que d'autres outils peuvent aider à apprendre ce que signifie une expression régulière. http://www.ultrapico.com/Expresso.htm –

2

@ dit que la chaîne littérale est textuellement.

Les matchs regex:

/Type suivi de zéro espaces blancs ou plus, suivie par /Page et un caractère non s

Il correspondra à des chaînes comme /Type/Pagex, /Type /Page3, /Type /Page?

1

@ commence Chaîne aC# verbatim, dans laquelle le compilateur ne traite pas les séquences d'échappement, ce qui facilite l'écriture d'expressions avec beaucoup de \ caractères.

les deux du match suivant

/Type /Page4 
/Type    /Pagex 
1

Votre expression régulière correspond à toute chaîne contenant les éléments suivants:

  • A "/" caractère
  • Le mot "Type" (sensible à la casse)
  • En option, certains espaces
  • Autre "/"
  • Le mot "Page" (sensible à la casse)
  • Tout caractère qui n'est pas un "s"

Exemples serait "/ Type/paginée" ou "/ Type/Pager".

Si vous voulez faire correspondre soit "Page" ou "pages" à la fin, vous voulez probablement ceci:

Regex (@ "/ Type de \ s */Pages?"); Il s'agit d'un bon online C# regex tester.

1

En gros, il correspond: /type {espace en option}/{page pas 'de'}