gpt4 book ai didi

java - 捕捉可能存在或不存在的值(value)

转载 作者:行者123 更新时间:2023-11-30 02:29:40 24 4
gpt4 key购买 nike

我有多行如下,其中“ProgressiveAwardWinnings”部分可能存在也可能不存在。我正在尝试从这些行中提取数字数据。

LineStake":5000.0,"Won":200, -something- ProgressiveAwardWinnings":10000 LineStake":5000.0,"Won":100, -something-

因此从第一行提取的信息将为 5000.0, 200, 10000,第二行将为 5000.0, 200, null。

我的正则表达式如下。两行的第三个值均显示为空。我期望捕获第 1 行的第三个值。请提供建议。

正则表达式

LineStake\":([0-9\.]+),\"Won\":([0-9\.]+),.*?(?:ProgressiveAwardWinnings\"\:([0-9]+))?

最佳答案

问题是 lazy .*? 尽可能匹配 0+ 个字符,并且在第一次正则表达式时被跳过引擎到达该模式部分,并尝试匹配其余模式。如果它们匹配,则 .*? 甚至不会被尝试,也不会扩展(?:...)? 非捕获组是可选的,它可以匹配空字符串。

因此,一旦 200 在第 1 行匹配,.*? 就会被跳过,并且 (?:...)? 会匹配200 后面有空格,并在该点返回匹配项。

解决方案是将.*?放入可选组中:

LineStake\":([0-9\.]+),\"Won\":([0-9\.]+),(?:.*?ProgressiveAwardWinnings\"\:([0-9]+))?
^^^

请参阅regex demo

关于java - 捕捉可能存在或不存在的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com