Regex положительные взгляды в группе, чтобы отфильтровать определенный символ, а затем отфильтрованные по группе обратные ссылки?

Итак, в моем регулярном выражении есть группа, содержимое которой представляет собой число с тире:

00-111-222-333-44

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

0011122233344

Примерно так, но для всей строки, сейчас выражение просто соответствует первому числу перед тире, то есть 00:

[0-9]+(?=-)

Есть ли более простой способ просто выбрать все цифры внутри этой группы, игнорируя тире, чтобы я мог просто ссылаться на группу и получать чистые цифры без тире?

2 ответа

Вы можете использовать следующую команду perl, чтобы заменить все дефисы между числами:

perl -pe 's#(?<=\d)-(?=\d)##g'

Как я могу использовать позитивный взгляд с тире в этой группе, чтобы при повторной ссылке на группу позже она содержала только цифры?

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

Другие вопросы по тегам