Regex 使用正则表达式排除字符组合或添加字母

Regex 使用正则表达式排除字符组合或添加字母,regex,web-scraping,kodi,Regex,Web Scraping,Kodi,我正试图用正则表达式调整KODI的搜索过滤器,以便刮片器从原始文件名中识别电视节目 它们要么以这种模式出现: “电视节目名称S04E01一些额外信息”或此“电视节目名称01一些额外信息” 第一个不被识别,因为“S04”以多种方式扰乱搜索,这需要继续。 第二个不被识别,因为它在数字之前需要一个“e”,否则,它将不会被识别为一个集号 因此,我看到两种方法 使过滤器忽略s01-99 在任何独立的两位数前加上“e”,但我担心正则表达式是否能做到这一点 我没有在正则表达式方面的经验,但我一直在玩这个,

我正试图用正则表达式调整KODI的搜索过滤器,以便刮片器从原始文件名中识别电视节目

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

因此,我看到两种方法

  • 使过滤器忽略s01-99

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

  • 我没有在正则表达式方面的经验,但我一直在玩这个,这并不奇怪

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

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

    详细信息

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

    注意:如果您需要生成一个数字范围正则表达式,您可以使用。

    您能更具体一点吗?您有
    电视节目名称S04E01一些额外信息
    电视节目名称01一些额外信息
    。现在,你想得到什么结果?您使用什么工具来获得结果?你到底在尝试什么,什么不起作用?它是如何工作的?是的,请直接为问题添加更多细节。我觉得我在最初的帖子中太不具体了。所以我可以用两种格式来制作我的节目,要么是“S01E01”,要么就是“01”,我可以根据我能得到的过滤器来选择哪种格式。如果什么都没有,就假设是S01。柯迪理解电视剧插曲的唯一方式是“E01”格式。如果有一个“S02-S99”的前缀,它会导致问题,特别是对于动画,每个季节都有单独的文件夹。第四季《泰坦之战》对Kodi来说被称为“泰坦之战:最后一季”,这是最后一季的S01,所以最好不要使用它。Kodi有一个内置的正则表达式过滤器,可以根据需要进行调整/附加。kodi.wiki/view/Advancedsettings.xml(本例中为tvshowmatching部分)我正在尝试此筛选器忽略文件名的所有“S00-S99”内容,或在文件名中的独立两位数中添加“E”,具体取决于我将选择的源文件类型。我只需要其中一个解决方案的工作,并将相应地调整源材料。(releasegroups只有这两种命名策略)好的,将
    E
    添加到任何两位数都很容易:
    \b([0-9]{2})\b
    =>
    E$1
    ,但您需要使用特定的正则表达式替换方法。我不知道科迪有没有。