2010-11-23 2 views
2

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

+3

Ваша строка отсутствует = это намеренно? – 2010-11-23 15:56:16

ответ

2

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

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

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

1

В C#, это хорошая идея, чтобы добавить @ прежде, чем строки, содержащие рег объединительные панели:

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

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

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

, где \| не reco как вы этого хотите.

+0

Хороший совет, не очень-то хорошее объяснение. В текстовой версии verbatim `\ '` необходимо изменить на `` ``, а дополнительный обратный слэш в `\\ |` должен быть удален. Но регулярное выражение OP хорошо сформировано для строки, отличной от слов. Я подозреваю, что реальной проблемой было отсутствие `=`, как указал @AndrewCox в своем комментарии. – 2010-11-23 22:36:01

3

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

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

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

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

    Regex r = new Regex(pat, RegexOptions.IgnoreCase); 
    Match m = r.Match(text); 
    ... 
+0

thanx, который отлично сработал !! – 2010-11-23 17:04:05

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