正则表达式在分隔符后获取值

时间:2017-12-14 17:53:35

标签: regex

我试图写一些正则表达式,以便能够获取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=(.*),但当然它在完全匹配后得到了所有内容。

你们有什么解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

我希望能够在banana=之后得到任何内容,并且如果它存在则停在|

您可以使用否定字符类而不是贪婪点模式:

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

请参阅regex demo

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

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

模式详情

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