【问题标题】:Exclude a combination of characters with regex or add a letter使用正则表达式排除字符组合或添加字母
【发布时间】:2021-04-29 08:09:58
【问题描述】:

我正在尝试使用正则表达式调整 KODI 的搜索过滤器,以便抓取工具从其原始文件名中识别电视节目。

它们要么以这种模式出现: “电视节目名称 S04E01 一些额外信息”或此“电视节目名称 01 一些额外信息” 第一个不被识别,因为“S04”以多种方式扰乱搜索,这个需要去。 第二个不被识别,因为它需要在数字前加一个“e”,否则它不会被识别为集数。

所以我看到了两种方法。

  1. 让过滤器忽略s01-99

  2. 在任何独立的两位数字前面加上“e”,但我担心正则表达式是否能做到这一点。

我在正则表达式方面没有经验,但我一直在尝试想出这个,不出所料,这并不能解决问题

^(?!s{00,99})\d{2}$

【问题讨论】:

  • 你能说得更具体点吗?你有TV show name S04E01 some extra infoTV show name 01 some extra info。现在,你想得到什么结果?您使用什么工具来获得结果?你到底在尝试什么,什么不起作用?它是如何工作的?
  • 是的,请直接在问题中添加更多详细信息。
  • 我觉得我的原始帖子太不具体了。所以我可以以两种格式获取我的节目,或者使用“S01E01”或仅使用“01”,我可以根据我能够获得的过滤器选择哪一种。如果什么都没有,它将假定为 S01。 Kodi scraper 理解电视节目剧集的唯一方法是“E01”格式。如果前面有“S02-S99”,则会导致问题,尤其是动漫,每个季节都有单独的文件夹。进击的巨人第 4 季被称为“进击的巨人:最后一季”对 Kodi 来说,这是最后一季的 S01,所以最好不要再说了。
  • kodi 有一个内置的正则表达式过滤器,可以根据需要进行调整/附加。 kodi.wiki/view/Advancedsettings.xml(在这种情况下为 tvshowmatching 部分)我正在尝试让此过滤器忽略文件名的所有“S00-S99”内容或将“E”添加到文件名中的独立两位数,取决于我将选择哪种源文件。我只需要其中一种解决方案即可工作,并将相应地调整源材料。 (发布组只有这两种命名策略)
  • 好的,将E添加到任何两位数都很容易:\b([0-9]{2})\b => E$1,但您需要使用特定的正则表达式替换方法。我不知道kodi有没有。

标签: regex web-scraping kodi


【解决方案1】:

您可以找到\b([0-9]{2})\b 正则表达式匹配并替换为E$1,或者在忽略过滤器中匹配\bs(0[1-9]|[1-9][0-9])\b 模式。

详情

  • \b([0-9]{2})\b - 匹配并捕获未包含在字母、数字和 _ 中的任何两个数字到第 1 组。 E$1 替换意味着匹配的文本(两位数)被替换为自身(因为 $1 指的是第 1 组值),并在值前面加上 E
  • \bs(0[1-9]|[1-9][0-9])\b - 匹配s 后跟0199 之间的数字,因为(0[1-9]|[1-9][0-9]) 是匹配0 的捕获组,然后是从19 的任何数字([1-9]) , 或 (|) 从 19 ([1-9]) 的任何数字,然后是任何数字 ([0-9])。

注意:如果需要生成数字范围正则表达式,可以使用this JSFiddle of mine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多