Как извлечь значение между двумя строками с помощью регулярных выражений? - PullRequest
0 голосов
/ 01 августа 2009

Вот демо-строка:

beforeValueAfter

Предположим, я знаю, что мне нужно значение между "до" и "после" Я хочу объяснить "Значение" с помощью регулярного выражения ....

pervious909078375639355544after

Предположим, я знаю, что значение, которое я хочу, находится между "pervious90907" и "55544after" Я хочу объяснить "83756393" с помощью регулярного выражения ....

спасибо заранее.

Ответы [ 4 ]

3 голосов
/ 01 августа 2009

Ответ зависит от двух вещей:

  • Если вы точно знаете, , из чего состоит значение (если вы знаете, что это будут цифры и т. Д., Это будет проще). Если это может быть что-то, ответ немного сложнее.
  • Если ваша система по умолчанию жадная / неряшливая, это влияет на то, как вы настроите выражение. Я предполагаю, что это жадный по умолчанию.

Если это может быть что угодно (знак? Понадобится, чтобы переключить .* в несмешивающееся, потому что ".*" также соответствует "После":

/before(.*?)After/

Если вы знаете, что это цифры:

/before(\d*)After

Если это могут быть любые слова (0-9, a-z, A-Z, _):

/before(\w*?)After
0 голосов
/ 01 августа 2009
bash-3.2$ echo pervious909078375639355544after | perl -ne 'print "$1\n" if /pervious90907(.*)55544after/'
83756393
0 голосов
/ 01 августа 2009

Регулярное выражение должно быть таким:

previous([0-9]*)after
0 голосов
/ 01 августа 2009

Попробуйте это регулярное выражение:

pervious90907(.*?)55544after

Это даст вам самую короткую строку (обратите внимание на негладкий *? квантор) между pervious90907 и 55544after.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...