Regex前瞻性断言会拾取不需要的数据



这是我的正则表达式:

((?<="StartDate":")d{4}-d{2}-d{2}(?=.+"Status":"(B|C)")) 

我试图过滤下面的JSON,只显示状态=B或C的记录的开始日期值,但我的regex返回所有状态,包括状态不等于B或C。

我使用了一个regex测试站点,并在此处保存了我当前的进度:https://regexr.com/58314

JSON:
[{quot;RowNumber":1,"PeriodNumber":0,"StartDate"2023-10-18","Status":"A","StatusDesc":"In Progress"},{"行编号":2,"周期编号":0,"开始日期":"2021-01-01","雇员公司":"0A","公司名称":"公司2","员工状态":"Y","TKGroup":"AR","状态":"B"、"StatusDesc":"Submitted"},{"行编号":3,"周期编号":0,"开始日期":"2020-01-01","雇员公司":"0A","公司名称":"公司3","员工状态":"Z","TKGroup":"AR","状态":"C"、"StatusDesc":"被拒绝"},{"行编号":4,"周期编号":0,"开始日期":"2019-10-18","雇员公司":"0A","FirmName":"公司4","EmpStatus":"A","TKGroup":"AR","Status":"A"、"StatusDesc":"进行中"}]

预期:(两个日期都符合状态=B或C的标准(
2021-01-01
22020-01-01

实际:(不应捕获第一个日期(2023-10-18(,因为它的状态为=A,我可以消除状态为A的另一个日期,但不能消除第一个日期。(
2023-10-18
2021-01-01
22020-01-01

我只是做了一个小改动。

((?<="StartDate":")d{4}-d{2}-d{2}(?=","Status":"(B|C)"))

",代替.+

相关内容

最新更新