2014-12-27 3 views
0

Может ли кто-нибудь просветить меня, почему регулярное выражение не работает в C#? Спасибо.Специфическое регулярное выражение в C#

Regex 101

Im пытается получить raudi06 из следующей строки (как описано в ссылке): «\ п http://dsde.innogamescdn.com/8.30.1/23852/graphic/welcome/ player_points.png 3ba0c \ "> \ п raudi06 \ т \ т \ т \ т \ т \ т \ т \ т \ т \ т \ т"

вот код:

 Match match = new Regex(@"[^>]+>\\n\s+(.*?)\\").Match(playerText); 
     return match.Groups[1].Value; 

Значение представляет собой пустую строку, в отличие от пояснительного выражения для regex101.com. Является ли это du e to C# regex flavor? Я не знаю много о регулярном выражении и надеюсь, что, может быть, вы знаете об этих конкретных деталях.

Спасибо заранее!

+0

является '\ n' в вашем вводе символов буква, \ n или одного символа новой строки? –

+0

@ Авинаш Радж. Я не уверен в этом, но я думаю, что это буквально. Я скопировал его из окна просмотра переменных Visual Studio. – Zackline

ответ

0

Фактически символы пробелов (\ n, \ t) не были буквальными. Об этом я узнал, щелкнув правой кнопкой мыши переменную в окне просмотра Visual Studio и выбрав параметр value, который отобразил строку без буквенных пробельных символов.

[^>]+>\s+([^\s]*) 

Работает в соответствии со строкой. Благодарим вас за подсказку, Авинаш Радж.

0

Попробуйте это вместо:

System.Text.RegularExpressions.Regex.Match(input, "[^>]+>\s+(.*?)\s", System.Text.RegularExpressions.RegexOptions.Multiline) 
0

Когда вы видите \ п и \ т в строке, они просто одиночные carácter заполнители для новой строки и табуляции. Это означает, что вы никогда не найдете \ n, ища \ и n.

Образец, который вы используете, будет выглядеть специально для обратного слэш, за которым следует буква n. Чтобы изменить это, просто удалите одну из обратных косых черт, оставив \ n вместо \ n

Следующая задача - это конечные критерии для вашей строки. В вашем шаблоне вы снова ищете обратную косую черту (\), но ее нет, просто вкладки (\ t). Это вы можете изменить на \ t, и это должно сработать.

Match match = new Regex(@"[^>]+>\n\s+(.*?)\t").Match(playerText); 
Смежные вопросы