【问题标题】:Python / regex - Extract string between nth and nth characterPython / regex - 在第 n 个和第 n 个字符之间提取字符串
【发布时间】:2022-12-18 16:21:08
【问题描述】:

我有多个 url 值,例如:

https://www.happy.com/de/article/98238811/poppers

https://www.happy.com/sr

https://www.happy.com/en/forum/ocean-liveliness

我想提取第 3 个和第 4 个斜杠之间的值(如果存在第 4 个斜杠)(例如:de、sr、en)

在第 4 和第 5 个斜杠之间(例如:文章、论坛)

我对正则表达式很糟糕,我试过这个 [\/]*[^\/]+[\/]([^\/]+) 但它似乎获得了所有值,包括 www.happy。我不想要。

【问题讨论】:

  • 为什么使用 regex 而不是 split 函数?

标签: python regex


【解决方案1】:

在这种情况下,您甚至可能不需要正则表达式。只需简单地用斜线分割字符串。并检查返回的块。 例如。

>>> "https://www.happy.com/de/article/98238811/poppers".split('/')[3]
'de'
>>> "https://www.happy.com/de/article/98238811/poppers".split('/')[4]
'article'

【讨论】:

    【解决方案2】:

    我同意 Split 函数更容易的其他答案/cmets,但是如果您坚持使用正则表达式,则在 Python 的正则表达式中有 K 运算符,它会丢弃左侧的匹配部分。

    因此,^(?:.*?/){3}K.*?(?=/|$) 将从每行的开头搜索三个斜杠,然后将其从匹配中丢弃,进行非贪婪匹配 .*? 以获取您想要的结果,然后进行前瞻以停止匹配斜杠或行尾,以先遇到的为准。前瞻将不包含在匹配中。

    如果您一次扫描多个示例,请确保包含 RE.M 标志,以便 ^ 和 $ 匹配行的开始/结束以及字符串的开始/结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多