Regex отрицательный взгляд за помощью - PullRequest
0 голосов
/ 07 июня 2019

Я мог бы использовать руку с тем, что, вероятно, является простым регулярным выражением.Мне нужно сопоставить строки, содержащие строку birth_dt_tm, которой не предшествует datetimezoneformat(.Я пытался использовать отрицательный вид сзади, но обе строки в моем примере текста совпадают.

Примеры строк:

    dob = datetimezoneformat(p.birth_dt_tm, p.birth_tz, "MM/DD/YYYY")
    dob2 = format(p.birth_dt_tm, "MM/DD/YYYY;;d")

что я пробовал:

^.*(?<!datetimezoneformat\().*birth_dt_tm

Используя PCRE,это соответствует обеим линиям от начала строки до birth_dt_tm.Я просто хочу, чтобы он совпадал со второй строкой.

См. Пример для примера - https://regex101.com/r/lv4nGK/1

1 Ответ

0 голосов
/ 07 июня 2019

Lookbehind в PCRE не поддерживает динамические соответствия длины. Вы можете использовать глаголы PCRE (*SKIP)(*FAIL), чтобы пропустить и провалить совпадение, которое вам не нужно в своих результатах, используя альтернацию , а в RHS используйте то, что вы хотите сопоставить:

\bdatetimezoneformat\([^)]*\bbirth_dt_tm\b(*SKIP)(*F)|\bbirth_dt_tm\b

RegEx Demo

...