我试图在“crusegdf”这个词之前找到某些“喜欢”的行。例如,给出以下输入:
def shared temp-table w-cruseg no-undo field cruise-id like crusegdf.segment-id
define {1} shared temp-table tt-history no-undo like crusegdf.
我只想匹配第二行。但我的正则表达式找到了这两条线。我现在使用的正则表达式是:
(?i)(define|def)(.*?)(temp-table)(.*?)(like)\s*(\bcrusegdf\b)\s*(\.)
答案 0 :(得分:1)
您不能使用\b
来分隔您的字段名称,因为您的输入的字段名称包含点;点不是"字"字符。
而是使用负面向前看一个点,然后使用更多字段名称:
^(?i)(define|def).*?temp-table.*?like\s*\bcrusegdf\b(?!\.\w).*$
请参阅live demo。
我还删除了不必要的括号(你的问题并没有说你需要捕获输入)。
答案 1 :(得分:0)
您可以使用此否定前瞻性正则表达式来匹配包含like
之类的内容,但不包含define
:
^(?:(?!\bfield\b).)*like.*
(?:(?!\bfield\b).)*
将匹配0个或更多在下一个位置没有field
的字符。