【问题标题】:in regex get a single match just before the match pattern?在正则表达式中,在匹配模式之前获得一个匹配?
【发布时间】:2016-06-14 19:50:13
【问题描述】:

我有如下回复

{"id":9,"announcementName":"Test","announcementText":"<p>TestAssertion</p>\n","effectiveStartDate":"03/01/2016","effectiveEndDate":"03/02/2016","updatedDate":"02/29/2016","status":"Active","moduleName":"Individual Portal"}
{"id":103,"announcementName":"d3mgcwtqhdu8003","announcementText":"<p>This announcement is a test announcement”,"effectiveStartDate":"03/01/2016","effectiveEndDate":"03/02/2016","updatedDate":"02/29/2016","status":"Active","moduleName":"Individual Portal"}
{"id":113,"announcementName":"asdfrtwju3f5gh7f21","announcementText":"<p>This announcement is a test announcement”,"effectiveStartDate":"03/02/2016","effectiveEndDate":"03/03/2016","updatedDate":"02/29/2016","status":"InActive","moduleName":"Individual Portal"}

我正在尝试获取announcementName d3mgcwtqhdu8003 的id (103) 的值。

我正在使用下面的正则表达式模式来获取 id

 "id":(.*?),"announcementName":"${announcementName}","announcementText":"

但它匹配从第一个 id 到announcementName 的所有内容。并返回

9,"announcementName":"Test","announcementText":"<p>TestAssertion</p>\n","effectiveStartDate":"03/01/2016","effectiveEndDate":"03/02/2016","updatedDate":"02/29/2016","status":"Active","moduleName":"Individual Portal"}
{"id":103,"announcementName":"d3mgcwtqhdu8003","announcementText":

但我只想从之前所需的announcementName 的ID 匹配。

如何在 RegEx 中执行此操作。有人可以帮我吗?

【问题讨论】:

  • ps:无法为此设置正确的问题标题。 :-/
  • 你能添加一个特定的语言标签吗?(javascript ??)
  • 这不是JSON 吗?为什么不使用适当的解析器?如果不是,则 ID 是数字,……。就像"id":(\d+) will probably do 一样简单。

标签: regex perl


【解决方案1】:

这里也是一个答案。要么使用适当的JSON 函数,否则使用简单的正则表达式,例如:

"id":(\d+)

will probably do 因为 ID 是数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多