2009-12-10 2 views
1

Можете ли вы объяснить мне, что означает это регулярное выражение. Какая строка будет соответствовать этому выражению.C# Регулярное выражение

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

что такое @ символ ?? Заранее спасибо.

Просьба предоставить полное разъяснение. То, что будет строка, которая соответствует это выражение.

+0

@ означает дословный строку. Это означает, что escape-последовательности не работают, что полезно для регулярных выражений. – Reshure

ответ

6

@ символа обозначает verbatim string literal:

Дословные строковый литерал состоит из символа @ следует двойной кавычки а, ноль или более символов и закрывающей двойной кавычка знак. Простой пример: @ «привет». В текстовой строке символы между разделителями интерпретируются дословно, , единственным исключением является quote-escape-sequence. В частности, простые escape-последовательности и шестнадцатеричные и Unicode escape-последовательности не обрабатываются в дословных строковых литералах. Дословный текст Строковый литерал может охватывать несколько строк .

Что касается регулярного выражения, он ломается, как это:

/Typeсоответствует этой строке ровно
\s*матча любого символ пробела ноль или более раза
/Pageматч этой строки точно
[^s]матч любой символ, который не является «s»

+0

Expresso, а также другие инструменты могут помочь узнать, что означает регулярное выражение. http://www.ultrapico.com/Expresso.htm –

2

@ говорит, что строковый литерал дословно.

регулярное выражение совпадений:

/Type следуют ноль или более пробелов, а затем /Page и символ, который не является s

Это будет соответствовать строки как /Type/Pagex, /Type /Page3, /Type /Page?

1

@ начинается aC# verbatim string, в которой компилятор не обрабатывает escape-последовательности, что упрощает запись выражений с большим количеством символов.

оба следующего матча

/Type /Page4 
/Type    /Pagex 
1

Ваше регулярное выражение соответствует любой строке, содержащей следующее:

  • символ "/"
  • Слово "Тип" (чувствительно к регистру)
  • Возможно, некоторые пробелы
  • Другой «/»
  • Слово «страница» (чувствительно к регистру)
  • Любой символ, который не является «s»

Примерами могут служить «/ тип/выгружаемого» или «/ тип/пейджера».

Если вы хотите, чтобы соответствовать либо "Страница" или "Страницы" в конце концов, вы, вероятно, хотите вместо этого:

Regex (@ "/ тип \ S */Страницы?");

Хороший online C# regex tester.

1

Грубо говоря, это соответствует: /тип {необязательный пробел}/{Страница не 'S'}

Смежные вопросы