2015-12-05 13 views
1

У меня есть многострочное текстовое поле на моей веб-странице. Я вставляю содержимое документа, как показано ниже, и я хотел бы найти шаблон и вставить над ним строку текста.Используйте регулярное выражение, чтобы найти строку и вставить строку выше

   RANDOM TEXT Title 123 AB 
Data 01 
       ABC RAND Title 345 CB 
Data 02 

Есть ли способ, чтобы найти все Название слова и вставить строку текста над ним? Как показано ниже?

I WANT TO SPLIT HERE 
       RANDOM TEXT Title 123 AB 
Data 01 

I WANT TO SPLIT HERE 
       ABC RAND Title 345 CB 
Data 02 
+0

Этот вопрос очень похож на другой вопрос. См. Http://stackoverflow.com/questions/34108348/trying-to-split-a-document-by-section-title-using-regex. Ни один из вопросов программирования не показывает никаких реальных усилий от вас, чтобы решить вопрос. – AdrianHHH

+0

На самом деле это довольно обычный вопрос, и определенно не подходит «почему этот код не работает». ОП ясно, он должен иметь определенное поведение. –

ответ

1

Поиск:
(\n|^)[^\n]+Title[^\n]+

\n = новая линия
^ = начало строки/документ
[^x] = не х
[^x]+ = многие не иксы
| = альтернативные


Заменить:
I WANT TO SPLIT HERE\n$0

$0 = якорь согласованного текста (0 есть все)


Для того, чтобы понять эти вещи попробовать использовать это:

https://regex101.com/

1

Если вы действительно найдите одно слово «Заголовок», вам даже не нужно regex.

using System.Linq; 
. . . . . . 
List<string> lines = myTb.Split(new Char[] { "\n", "\r" }, StringSplitOptions.None); 
int index; 
while (index < lines.Length) 
{ 
    if (lines[i].IndexOf(" title ", StringComparison.OrdinalIgnoreCase) > -1) 
    { 
     lines.Insert(index, "my insert text into new line"); 
     // we just added new line, so current line is index + 1 
     index++; 
    } 

    index++; 

} 
myTb.Lines = string.Join(lines, "\n\r"); 

Уведомление - не может использоваться для цикла, потому что коллекция мутирует. И это будет [скорее всего] быстрее, чем регулярное выражение. Попробуйте эту опцию ant time vs regex и прокомментируйте мой ответ с результатом синхронизации. Спасибо

+0

@Rod, если вы видели мой первоначальный ответ - это было для форм выигрыша. Теперь я исправил его для asp.net –

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