【问题标题】:Can Regex capture a certain string only if a condition is met?只有满足条件,Regex 才能捕获某个字符串?
【发布时间】:2020-07-03 01:59:36
【问题描述】:

我有这组数据:

  • EndDate":"2024-10-24","Employee":"000A0001","Submitted":"N"
  • EndDate":"2023-10-18","Employee":"000A0001","Submitted":"P"
  • EndDate":"2021-01-02","Employee":"000A0001","Submitted":"J"
  • EndDate":"2022-10-11","Employee":"000A0001","Submitted":"M"
  • EndDate":"2020-09-18","Employee":"000A0001","Submitted":"N"

我只想捕获提交值为 N 或 MEndDate

捕获的 EndDate 应该是:

  • 2024-10-24
  • 2022-10-11
  • 2020-09-18

【问题讨论】:

  • 尝试向我们展示您的尝试

标签: regex regex-lookarounds regex-group regex-negation


【解决方案1】:

是的,您可以使用正则表达式积极前瞻来做到这一点:

\d{4}-\d{2}-\d{2}(?=.+"Submitted":"[NM]")

更多详情:Regex lookahead, lookbehind and atomic groups

【讨论】:

  • 非常感谢!这行得通!我是正则表达式的新手,这很有帮助。
【解决方案2】:

捕获日期并使用前瞻:

"EndDate":"([^"]+)"(?=.*"Submitted":"[NM]")

您的结束日期在比赛的第 1 组。

注意:我在正则表达式的开头添加了 '"',假设您不小心从看起来是 json 的示例中省略了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多