Regex在分隔符后获取一个值

Regex在分隔符后获取一个值,regex,Regex,我试图编写一些正则表达式,以便能够获取香蕉的价值。所以给出了这个文本列表 因此,基本上,对于每一行,我希望能够得到banana=之后的任何内容,并让它停在|处(如果存在) apple=1|banana=2.5|oranges=1 banana=2.5|apple=1|oranges=1 apple=1|oranges=1|banana=2.5 apple=1|oranges=1|banana=-2.5 banana=2.5 我已经写了(?I)banana=(.*),但当然,在完全匹配之后,它得

我试图编写一些正则表达式,以便能够获取香蕉的价值。所以给出了这个文本列表

因此,基本上,对于每一行,我希望能够得到
banana=
之后的任何内容,并让它停在
|
处(如果存在)

apple=1|banana=2.5|oranges=1
banana=2.5|apple=1|oranges=1
apple=1|oranges=1|banana=2.5
apple=1|oranges=1|banana=-2.5
banana=2.5
我已经写了
(?I)banana=(.*)
,但当然,在完全匹配之后,它得到了一切

你们有什么解决办法吗

谢谢

我希望能够得到
香蕉=
之后的任何东西,并让它停在
|
处(如果存在)

apple=1|banana=2.5|oranges=1
banana=2.5|apple=1|oranges=1
apple=1|oranges=1|banana=2.5
apple=1|oranges=1|banana=-2.5
banana=2.5
您可以使用求反字符类而不是贪心点模式:

(?i)banana=([^|]*)

贪心点,
*
,尽可能多地匹配除换行符以外的任何0+字符(在NFA引擎中)(通常,直到换行符的末尾)

如果使用否定字符类
[^ |]
,它将匹配除
之外的任何字符

图案细节

  • (?i)
    -不区分大小写修饰符
  • banana=
    -一个文字子字符串(在前面加上
    \b
    ,将其作为一个单词匹配)
  • ([^ |]*)
    -捕获组1:除
    以外的任何0+字符(为避免空匹配,请将
    *
    替换为
    +
    量词)

非常感谢您的详细解释。另外,这个regex101站点似乎非常有用。非常感谢。完成!再次感谢:)