Использование Lookaround или игнорирование не захвата в матче с регулярным выражением - PullRequest
2 голосов
/ 02 августа 2011

Рассмотрим следующую строку: ABC. Я хотел бы захватить следующие группы, используя регулярное выражение:

Group1: AC
Group2: B

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

Я пробовал обе группы без захвата и осматривался.

В группе без захвата матч по-прежнему является частью окончательного результата.

(?<Group1>a(?:(?<Group2>b))c)

Group1: ABC # Не верно, так как B является частью матча. Группа2: B

В случае обходного пути Group2 не используется, и регулярное выражение, следующее за прогнозом, должно снова соответствовать содержимому Group2, которое включает его как часть Group1.

(?<Group1>a(?=(?<Group2>b))bc)

Group1: ABC # Не верно, поскольку B является частью матча. Группа2: B

Как я могу игнорировать "B" как часть матча Group1?

Любая помощь в обходе этого очень ценится.

Спасибо, Баладжи

1 Ответ

1 голос
/ 02 августа 2011

Вы не можете.Движки Regex не могут вставлять нелинейные подспаривания в один матчЛюбое совпадение должно быть последовательностью символов из исходного текста.

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