2015-03-11 5 views
0

Выполнение некоторых манипуляций с текстом, и мне нужен регулярное выражение, которое будет найти каждую строку с отступом в пределах первой группы, но не вторая группа, в тексте ниже:JS Regex: Как заменить строки текста в определенной области?

First group of lines are below: 
- line 1 
- line 2 
- line 3 

Second group of lines are below: 
- line 1 
- line 2 
- line 3 

Например, я хочу, чтобы вставить «A» перед цифрами, но только в первой группе. Так я получаю:

- line A1 
- line A2 
- line A3 

Но опять-таки только в первой группе, даже если линии вторых групп идентичны. Просто делать .replace(/^(- \w+)(\d)/,'\1A\2' выполнит замену на всех строк, но я не знаю, как ограничить его только первой группой.

Является ли Javascript (или любой другой вкус) регулярным выражением? То есть, работайте с набором последовательных совпадений, только если заданию предшествует «определяющее» соответствие?

+0

Я думаю, что вам нужно изменить подход в задаче разрешения и задать вопрос: чем отличаются каждая группа? , возможно, попытка сделать «группу» в качестве аргумента общей функцией может помочь – eusoj

+0

В JavaScript у вас нет поддержки lookbehinds. В C# вы можете использовать это регулярное выражение: (?

+0

Спасибо за ответ, я знаю, что это можно сделать в коде, m конкретно интересуется, может ли это быть достигнуто только с регулярным выражением. –

ответ

1

Извлечение части текста поддается замена первые:

var a_parts 
    , s_orig 
    , s_final 
    , s_sep 
    ; 

s_orig = <from_whatever_source>; 
s_sep = "Second group of lines are below:"; 
a_parts = s_orig.split(s_sep); 
    // Substitute on a_parts[0], leave a_parts[1] untouched. 
s_final = 
    a_parts[0].replace(/^(- \w+)(\d)(.*)/g,'\1A\2') 
    + s_sep 
    + a_parts[1] 
; 

Метод обобщается простым способом более секций, которые должны быть обработаны по-другому. Обратите внимание, что аргумент .split может быть регулярным выражением, поэтому вы можете указать чередование разделителей разделов.

Это несколько напоминает концепцию «определяющего соответствия», представляющего (в целом: разграничение) соответствующую часть исходной строки.

+2

Интересный стиль кодирования. – Qwerty

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