2016-01-29 4 views
-1

У меня есть строковый текст в C#, который я пытаюсь получить все слова перед моим высказыванием eachDELETEDDELETED, и я хочу превратить их в список или массив. Может кто-то помочь с частью регулярного выражения.выражение regex для получения текста перед строкой

образец текста: word word word word word word 20 word-16S eachDELETEDDELETEDword word word word word word 20 word-16z1 (size 26), eachDELETEDDELETED

Regex ry = new Regex(@"eachDELETEDDELETED"); 
MatchCollection matchList = Regex.Matches(extracted, ry.ToString()); 
var list = matchList.Cast<Match>().Select(match => match.Value).ToList(); 

foreach (string s in list) 
{ 
    richTextBox2.Text += s + "\n"; 
} 
+0

ли вам одно слово (много раз в тексте) перед «eachDELETEDDELETED» или группа слов, прежде чем «eachDELETEDDELETED» –

+0

группа слов, то «eachDELETEDDELETED», а затем группа слов, то «eachDELETEDDELETED» .. и т.д. –

+0

Может вы предоставляете нам образец текста, чтобы я мог проверить на моей стороне? –

ответ

1

Просто используйте Regex.Split:

string example = "word word word word word word 20 word-16S eachDELETEDDELETEDword word word word word word 20 word-16S eachDELETEDDELETED"; 
string[] parts = Regex.Split(example, "eachDELETEDDELETED"); 
foreach(string part in parts) 
{ 
    Console.WriteLine(part); 
} 

Выведет:

word word word word word word 20 word-16S 
word word word word word word 20 word-16S 
+1

Я не знал о методе плевки, спасибо за вашу помощь! –

0

Просто для справки, это также может быть сделано с lookahead и якорь \G:

^|\G(?:([-\w]+)\s*)(?!(?:eachDELETEDDELETED)) 

См. a demo on regex101.com.

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