2013-07-03 4 views
-7

все У меня есть несколько строк, чтобы найти, как показано нижеЧто такое регулярное выражение для этого случая в C#?

\r\n1928A\r\n 
\r\nabc\r\n 
\r\n239\r\n 

Что такое лучший способ найти эти строки в предложении?

+5

Did вы что-нибудь пытаетесь? –

+0

что вы хотите '\ r',' \ n' или только 'n1928A' и что вы пробовали – Anirudha

+0

это слово всегда в betweem \ r \ n word \ r \ n .... –

ответ

2

Вы можете использовать это регулярное выражение

\r?\n\w+\r?\n 

В случае, если у вас есть только 1 \r?\n между словами ... Вы можете использовать это регулярное выражение

\r?\n\w+(?=\r?\n) 

\w будет соответствовать одной цифре, алфавит или _

+ is qua ntifier, который соответствует шаблону, предшествующим 1 во много раз

Так, \w+ будет соответствовать 1 ко многим словам

? будет соответствовать предыдущему образцу необязательно ..

Так, с \r? мы будем соответствовать \ г, необязательно


Ваш код будет

List<String> lst=Regex.Matches(input,regex) 
         .Cast<Match>() 
         .Select(x.Value) 
         .ToList(); 

Или, чтобы сделать его более ясным

foreach(Match m in Regex.Matches(input,regex)) 
{ 
    m.Value; 
} 
+0

Мне нравится, что вы также объясняете содержимое вашего данного регулярного выражения :) – hwcverwe

+0

@hwcverwe thanks ...: D – Anirudha

0

Предполагая, что слово, которое вы хотите, чтобы соответствовать, это всегда между двумя \r\n, вы можете использовать string.Split() вместо Regex:

string input = @"hello\r\nhow\r\nare\r\nyou?"; 
string[] words = input.Split(@"\r\n", StringSplitOptions.None); 
// words == { "hello", "how", "are", "you?" } 

if (words.Length >= 3) 
{ 
    for (int i = 1; i < words.Length - 1; i++) 
    // first and last elements ("hello" and "you?") are not between new lines 
    { 
     string word = @"\r\n" + words[i] + "\r\n"; 
     // do something with your words "how" and "are" 
    } 
} 
Смежные вопросы