正则表达式捕获模式的最后一次出现

All*_*len 1 regex perl

我最后一次尝试了几种方法,但它们没有用.以下是我的情况,

abc def = ghi
abc def ghi = jkl
abc def ghi=jkl mno
Run Code Online (Sandbox Code Playgroud)

对于第一行,我的捕获目标是"def".对于第二行,我的捕获目标是"ghi",对于第三行,我的捕获目标是"ghi".目标可以口头表达为"等号前最后出现的单词".

Perl的正则表达式应该如何?

alp*_*avo 8

你可以使用这种模式

(\w+)(?=\s*=)
Run Code Online (Sandbox Code Playgroud)

演示

(               # Capturing Group (1)
  \w            # <ASCII letter, digit or underscore>
  +             # (one or more)(greedy)
)               # End of Capturing Group (1)
(?=             # Look-Ahead
  \s            # <whitespace character>
  *             # (zero or more)(greedy)
  =             # "="
)               # End of Look-Ahead
Run Code Online (Sandbox Code Playgroud)