【问题标题】:JAVA Regex - find Substring between two delimiters - last occurrence of / and another pattern [duplicate]JAVA Regex - 查找两个分隔符之间的子字符串 - 最后一次出现 / 和另一个模式 [重复]
【发布时间】:2020-09-29 13:40:39
【问题描述】:

在测试 Azure Blob URL 时,我遇到了需要提取正在上传的 Blob 文件的情况。在以下示例中: https://servername.windows.net/virtual/folder/IwantToFindThisFileName.AnyExtension?Azurekey=SASKeyDetails

所以我想找到 - 在最后一次出现 / (在文件夹 / 之后)和第一次出现 ? (即 ?AzureKey)之间 - 这将返回文件名(可以是任何扩展名)。

注意:AzureKey 不是保留字。可以是 ?hg= 或 ?cn 或 ?asdf= 等

必需的输出只有 IwantToFindThisFileName.AnyExtension ,否则将需要对提取的子字符串进行进一步处理

【问题讨论】:

  • 但是查询不只是找到最后一个 / 和第一个 ?。使用 indexOf 和 lastIndexOf 很容易。但是需要一个有效的模式 (?=[^\/]+$).+(?=\?\w+=)

标签: java regex substring


【解决方案1】:

这行得通吗:

(?=[^\/]+$).+?(?=\?)

不确定是否/如何在Java 中逃脱(这里是新手)。但也许一般的想法是正确的?看看here

【讨论】:

  • 实际上应该是 (?=[^\/]+$).+(?=\?\w+=) 以确保我们已经考虑到问题中预期的 ?anyword 。这就是在 Note 中指定 ?AzureKey= 的全部意义
猜你喜欢
  • 1970-01-01
  • 2015-05-12
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2014-03-04
  • 2014-06-13
  • 1970-01-01
相关资源
最近更新 更多