当前位置: 首页 > 知识库问答 >
问题:

使用regex匹配句点分隔字符串中的最后一个单词

廉雅惠
2023-03-14

假设我有如下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

它与最后一部分相匹配,但也包括一个前期。我希望它只与单词匹配,而不需要其他任何东西。

更新:我使用的Python正则表达式规则在我的情况下显然不起作用。使用Python,我的正则表达式将最后一部分与一个额外的句点匹配,但使用JavaScript规则,它将匹配整个键。

https://regex101.com/r/0VRhl5/2

共有1个答案

奚曦哲
2023-03-14

如果不能使用解析器,则可以匹配一个,然后匹配除以外的任何字符,或者使用一个否定字符类匹配一个空格字符

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

"[^\s"]+\.([^"\s]+)":\s*{

Regex演示

另一个选项仅匹配单词字符,并在非捕获组中重复匹配一个点,后跟单词字符1次或多次

"\w+(?:\.\w+)+\.(\w+)":\s*{

Regex演示

 类似资料:
  • 例如,我们有一个字符串:asd/asd/asd/1#s_ 我需要匹配以下部分:/asd/1#s_或asd/1#s_如何使用普通正则表达式? 我试过像这样的消极前瞻,但它不起作用 它匹配这个“前缀/asd/1#s_”,我需要匹配“/asd/1#s_”中的这个“/asd/1#”,我需要匹配“/asd/1#s_”,而没有所有前面的 /asd/'s 匹配应该与普通正则表达式没有任何编程语言的任何帮助函数h

  • 所需匹配: 这个regex只匹配字符串第一个实例之后的所有内容: 思想?

  • 在字符串中分隔符的最后一次出现时拆分字符串的推荐Python习惯用法是什么?例如: 接受第二个参数,该参数是要拆分的分隔符的引用。与常规列表索引一样,表示从末尾开始的最后一个。如何做到这一点?

  • null 无效示例: 关于只有当值是唯一的时,我如何匹配有什么建议吗?

  • 我在创建正则表达式以匹配这些内置组时需要一些帮助: 我尝试了以下匹配模式,但它给了我一些错误: 错误代码: 这是预览:https://regex101.com/r/WKal3Y/1

  • 问题内容: 对于在字符串中 最后一次 出现定界符时拆分字符串的建议Python惯用法是什么?例: 接受第二个参数,即要分割的分隔符的出现。像常规列表索引一样,表示末尾的末尾。如何才能做到这一点? 问题答案: 使用 或代替: 可让您指定分割次数,而仅分割一次,但总是返回固定数量的元素(前缀,定界符和后缀),并且对于单个分割情况而言更快。 演示: 两种方法都从字符串的右侧开始拆分;通过将最大值作为第二