我试图写一些正则表达式,以便能够获取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=(.*)
,但当然它在完全匹配后得到了所有内容。
你们有什么解决方案吗?
谢谢!
答案 0 :(得分:3)
我希望能够在
banana=
之后得到任何内容,并且如果它存在则停在|
。
您可以使用否定字符类而不是贪婪点模式:
(?i)banana=([^|]*)
请参阅regex demo
贪婪的点.*
尽可能多地匹配换行符(在NFA引擎中)以外的任何0+字符(通常,直到行尾)。
如果你使用[^|]
,一个否定的字符类,它将匹配除|
之外的任何字符。
模式详情
(?i)
- 不区分大小写的修饰符banana=
- 一个文字子字符串(前缀为\b
以匹配整个单词)([^|]*)
- 捕获第1组:除|
以外的任何0 +字符(为避免空匹配,请将*
替换为+
量词)。