我可以用一只可能是简单正则表达式的手。我需要在包含字符串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
答案 0 :(得分:0)
PCRE中的Lookbehind不支持动态长度匹配。您可以使用 alternation 使用PCRE动词(*SKIP)(*FAIL)
跳过并失败您不希望出现在结果中的匹配,而在RHS上使用您想要匹配的内容
\bdatetimezoneformat\([^)]*\bbirth_dt_tm\b(*SKIP)(*F)|\bbirth_dt_tm\b