2015-11-15 3 views
0

Я хотел бы написать регулярное выражение для поиска строки, которая начинается с 'test1' и заканчивается первым «концом», в той же строке.Как написать регулярное выражение для строки, которая начинается и заканчивается определенным текстом в той же строке

Я попытался с

test1[^end]*end 

Но не удалось. Любые предложения/советы будут оценены.

Я пытаюсь его 'СЭД' и тест строка:

test1123andendtest2456end 

Что я пытаюсь:

echo 'test1123andendtest2456end'| sed -e 's/test1.*end/matrix/' 

Результат:

matrix 

Что я ожидаю:

matrixtest2456end 
+2

Это зависит от инструмента/язык вы используете. – HamZa

+0

«[Позитивный взгляд вперед] (https://www.google.de/search?q=Positive+look+ahead)« возможно? –

ответ

1

Оно должно быть:

^test.*end$ 
  • ^ является начало линии
  • test является буквальным тест
  • .* означает ноль или более любой символ. Поведение жадного означает, что оно будет потреблять как можно больше символов для выполнения условия. Это включает в себя использование экземпляров строки end, если в конце есть еще один экземпляр.
  • end является буквальным КОНЕЦ
  • $ конец линии.

Sidenote: жадность оператора * не имеет значения в этом примере, так как окончательный конец закреплен с концом линии $.


sed по умолчанию использует базовые регулярные выражения Posix. Они хорошо объясняются в manual of grep

+0

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

+0

@ LuisColorado Да, это правда. Тем не менее, я чувствовал, что могу все объяснить. – hek2mgl

+0

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

0

Попробуйте

^test1(.+)end$ 

Если вы хотите попробовать код: https://regex101.com/

+0

спасибо, regex101.com - отличная сеть, очень полезная – matrixzj

+0

Я думаю, что строка 'test1end' (без символов между ними также является допустимым вводом и не будет соответствовать этому регулярному выражению, было бы лучше использовать'^test1 (. *) конец $ '. –

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

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