Regex: рекурсивные обратные ссылки - зачем? - PullRequest
2 голосов
/ 04 февраля 2010

Я обнаружил интересную возможность во многих движках регулярных выражений:

Можно разместить обратную ссылку внутри группы захвата и ссылаться на эту группу.

Например: (\1)

Мой вопрос: для каких шаблонов регулярных выражений он может использоваться?Я не могу представить ...

Ответы [ 3 ]

3 голосов
/ 04 февраля 2010

Существует объяснение использования вложенных ссылок , которое, я думаю, ясно демонстрирует предельную полезность этой функции.

1 голос
/ 27 февраля 2011

У меня есть длинная схема yaml, которую я хочу / хочу изменить из этого:

columns:
    id:
      type: string(36)
      fixed: true
      unsigned: false
      primary: true
      autoincrement: false
    descripcion:
      type: string(45)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false

К этому:

columns:
    id: {type: string(36), fixed: true, unsigned: false, primary: true, autoincrement: false}
    descripcion: {...}...

в этом случае мне нужен уровень рекурсии в обратных ссылках, потому что имена столбцов находятся между описаниями столбцов. Это подходит для каждой строки, но я не могу поставить "{}" около $ 1, я бы в конечном итоге заключил в квадратные скобки между каждым полем описания:

"\n^      ([^\n]+)"
0 голосов
/ 24 февраля 2010

Как насчет этого (игнорируйте пробелы):

{ .* ( { .* \1 .* } ) .* }

, чтобы соответствовать телу метода в C # / Java /...

...