【问题标题】:Use capture group in re.sub在 re.sub 中使用捕获组
【发布时间】:2016-05-23 03:08:59
【问题描述】:

我有以下代码:

>>> s = 'https://www.microsoft.com/ja-jp/store/tv/%E7%BE%8E%E7%94%B7-%E3%82%A4%E3%82%B1%E3%83%A1%E3%83%B3-%E3%82%B9%E3%82%BF%E3%83%BC%E8%AA%95%E7%94%9F-%E3%83%8E%E3%83%BC%E3%82%AB%E3%83%83%E3%83%88%E7%89%88-subtitled/season-1/8d6kgwzj5pvv'
>>> re.sub(r'\/((tv)|(movies))\/\S+\/', '/**tv|movies**/x/', s)
'https://www.microsoft.com/ja-jp/store/**tv|movies**/x/8d6kgwzj5pvv'

我正在尝试为xxx 提取“tv”或“movies”值。我该怎么做才能得到:

>>> s = 'https://www.microsoft.com/ja-jp/store/tv/x/season-1/8d6kgwzj5pvv

【问题讨论】:

  • re.sub(r'\/((tv)|(movies))\/\S+\/', r'/\1/', s)
  • @Alik 请查看更新后的问题。这将切断“第 1 季”

标签: python regex python-2.7 python-3.x python-2.x


【解决方案1】:

使用

re.sub(r'\/((tv)|(movies))\/\S+\/', '/\\1/', s)

编辑:要匹配第二种情况,您可以使用:

re.sub(r'/((tv)|(movies))/[^/]+', r'/\1/x', s)

【讨论】:

  • 谢谢,你能看看更新后的问题吗,我漏掉了一部分,所以正则表达式切断了“season-1”部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2013-02-03
  • 2019-12-14
  • 1970-01-01
  • 2011-12-30
相关资源
最近更新 更多