регулярные выражения для строки в C # - PullRequest
2 голосов
/ 23 ноября 2010

Мне нужно использовать регулярные выражения в приложении ac #, и я пытаюсь использовать его как строку для использования метода regex.match.Мое регулярное выражение похоже на id="(tt[0-9]+)\|imdb, и я преобразую его в строку, например "id\"(tt[0-9]+)\\|imdb", но оно не работает.Есть ли у вас какие-либо решения или приложения, которые преобразуют регулярные выражения в строки ??

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Не уверен, что вы пытаетесь достичь, поэтому я иду по другому пути, чем другие посты.

Метод Regex.Match должен взять String, с которым вы пытаетесь сопоставить, похоже, что вы пытаетесь вернуться назад от сконструированного RegEx к строке.Если это так, просто вызовите ToString() в RegEx, чтобы получить переданное выражение.

Если вы просто пытаетесь получить выражение в виде строки, тогда приведенная ниже переменная pattern будет использоватьиз @, как упоминалось в других сообщениях.В любом случае, RegEx должен содержать шаблон, с которым вы хотите сопоставить.

  string text = "91919182389348487";
  string pattern = @"id=""(tt[0-9]+)\|imdb";

  Regex r = new Regex(pat, RegexOptions.IgnoreCase);
  Match m = r.Match(text);
  ...
2 голосов
/ 23 ноября 2010

Вы можете отказаться от экранирования и использовать знак @.

@"id=""(tt[0-9]+)\|imdb"

Примечание: вы должны удвоить двойные кавычки

1 голос
/ 23 ноября 2010

В C # рекомендуется добавить @ перед строками, содержащими reg exps:

 @"id\"(tt[0-9]+)\\|imdb"

В противном случае механизм регулярных выражений будет видеть только эту строку:

  id"(tt[0-9]+)\|imdb

, где \| не распознается так, как вы этого хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...