使用正则表达式匹配句号分隔的字符串中的最后一个单词

问题描述 投票:2回答:1

假设我有这样的JSON字符串:

[
  {
    "key1": "value",
    "key2": {
      "word1.word2.word3.word4.interestingPart": {
        "key1": "value",
        "key2": "value"
      }
    },
    "key3": "value"
  },
  {
    "key1": "value",
    "key2": {
      "word1.word2.word3.word4.word5.word6.thisIsAlsoAnInterestingPart": {
        "key1": "value",
        "key2": "value"
      }
    },
    "key3": "value"
  }
]

我如何使用正则表达式来匹配键中最后一个“有趣的部分”?我可以期望键总是以相同的方式启动(word1,word2,word3,word4)。但是,可能我不想包含在某些匹配中的内容因文件而异(word5,word6)。

这是我到目前为止提出的内容:

.+(\..+)+(?=")

https://regex101.com/r/BjOcfl/1

它匹配最后一部分,但也包含一个前一个时期。我希望它只匹配单词,不带其他内容。

json regex
1个回答
0
投票

如果不能使用解析器,则可以匹配",然后使用否定的字符类匹配除"或空白字符之外的任何字符。

然后让图案回溯到最后一个点,并捕获组中的最后一个部分,直到首次出现"

"[^\s"]+\.([^"\s]+)"

Regex demo

另一个仅匹配单词字符的选项:

"\w+(?:\.\w+)+\.(\w+)"

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.