# #regex #regex-lookarounds #google-cloud-logging
Вопрос:
Регулярное выражение ведения журнала GCP (Метрики на основе журналов) требует, чтобы я использовал только 1 группу захвата для своего фильтра регулярных выражений, в результате я не могу использовать взгляд вперед и назад, который я бы предпочел. Как я могу получить номер после KeyOne:
этого ?
Лог: KeyOne:32|KeyTwo:0|KeyThree:|Language:english
Желаемый Захват: 32
Если бы мне разрешили несколько групп захвата, это сработало бы: (?lt;=KeyOne:)([0-9] )(?=|)
Есть ли какой-нибудь способ сделать это с одной группой захвата?
Ответ №1:
То, что вы хотите сделать, может быть сделано точно с одной группой захвата без поиска, потому что регулярное выражение обрабатывается функцией, которая возвращает только захваченную подстроку, если группа захвата определена в шаблоне.
В вашем случае вы можете просто преобразовать непотребляющие части шаблона в потребляющие шаблоны:
KeyOne:([0-9] )| KeyOne:([0-9] )
Примечание. вам нужно только |
в конце, если вы хотите, чтобы совпадение происходило только тогда, когда |
после числа следует символ.