tags:

views:

104

answers:

5

Can you explain me what is the meaning of this regular expression. What would be the string which matches to this expression.

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

what is @ symbol?? Thanks in advance.

Please provide full explaination. What would be the string which matches to this expression.

+5  A: 

The @ symbol designates a verbatim string literal:

A verbatim string literal consists of an @ character followed by a double-quote character, zero or more characters, and a closing double-quote character. A simple example is @"hello". In a verbatim string literal, the characters between the delimiters are interpreted verbatim, the only exception being a quote-escape-sequence. In particular, simple escape sequences and hexadecimal and Unicode escape sequences are not processed in verbatim string literals. A verbatim string literal may span multiple lines.

As for the regular expression it breaks down like this:

/Type match this string exactly
\s* match any whitespace character zero or more times
/Page match this string exactly
[^s] match any character that isn't "s"

Andrew Hare
Expresso as well as other tools can help learn what a regular expression means. http://www.ultrapico.com/Expresso.htm
Lex Li
+1  A: 

@ says that the string literal is verbatim.

The regex matches:

/Type followed by zero or more whitespaces, followed by /Page and a character that is not s

It will match strings like /Type/Pagex, /Type /Page3, /Type /Page?

Amarghosh
A: 

@ starts a c# verbatim string, in which the compiler doesn't process escape sequences, making writing expressions with lots of \ characters easier.

both of the following match

/Type /Page4
/Type             /Pagex
BioBuckyBall
A: 

Your regular expression matches any string containing the following:

  • A "/" character
  • The word "Type" (case sensitive)
  • Optionally, some whitespace
  • Another "/"
  • The word "Page" (case sensitive)
  • Any character that isn't an "s"

Examples would be "/Type /Paged" or "/Type/Pager".

If you want to match either "Page" or "Pages" at the end, you probably want this instead:

Regex(@"/Type\s*/Pages?");

Here is a good online C# regex tester.

Richard Beier
A: 

Roughly, it matches: /Type{optional space}/Page{not an 's'}

cxfx