【问题标题】:Get German title and year of movie with regex使用正则表达式获取德语标题和电影年份
【发布时间】:2022-09-28 16:15:50
【问题描述】:

我想从字符串中删除除电影名称和年份之外的所有内容

我想保留不在括号中的所有内容:

**Dirty.Work.Wie.deweit.wuerdest.Du.gehen.2018**[.German.AC3.WEBRip]
**Zwei.baerenstarke.Typen.1983**[.DE.EN.DTSHD.MasteDEr.5.1.2160p.HDR10.x265-kellerratte]
**The.Hills.Have.Eyes.1977**[.COMPLETE.UHD.BLURAY-UNTOUCHED]
**Wonder.Woman.1984.2020.**[GERMAN.DUBBED.DL.2160p.HDR.WEB.x265]
**Wonder.Woman.1984**[.GERMAN.]**2020**[.DUBBED.DL.2160p.HDR.WEB.x265]
**2012**[.German.]**2006**[.DL.2160p.UHD.BluRay.HDR.HEVC.Remux]

**Sherlock.Holmes.2009**[.German.DL.]**2022**[.ock.Holmes.UHD.BluRay.2160p.UHD.BluRay.HDR.HEVC.Remux]

预期的:

Dirty.Work.Wie.deweit.wuerdest.Du.gehen.2018
Zwei.baerenstarke.Typen.1983
The.Hills.Have.Eyes.1977
Wonder.Woman.1984 2020 
Wonder.Woman.1984 2020 
2012 2006 
Sherlock.Holmes.2009 2022 

这是我尝试过的:

((?<=\\b\\d{4}\\b)|\\b(German|DE)\\b.*)

https://regex101.com/r/Z4cRMn/1

有谁知道怎么做?也许需要一些例子

  • 这是一个不好的方法。你对这个问题有偏见。所以你可能只会得到正则表达式的答案。有比使用正则表达式更好的解决方案。我通常可以使用 strpos 并创建比正则表达式更有效的解决方案。但没关系,如果你只想要一个正则表达式解决方案。
  • 您提出问题的方式有点误导 - 如果您想删除 [...] 中的任何内容,您就可以说清楚,但实际上并非如此,只有您在外部平台上的示例才能清楚地说明这一点。
  • 我怀疑你能得到精确的像你展示的那样输出。试试regex101.com/r/YtBAUe/1。我认为这是提供预期输出的最接近的解决方案。

标签: php regex video title


【解决方案1】:

你可以接近你所需要的使用

\[[^\]\[]*]|\W*\b(?:\d{4}|German|DE)\b(?!.*\[[^\]\[]*]).*

请参阅regex demo细节

  • \[ - 一个 [ 字符
  • [^\]\[]* - 除了[] 之外的零个或多个字符
  • ] - 一个 ] 字符
  • | - 或
  • \W* - 零个或多个非单词字符
  • \b - 单词边界
  • (?:\d{4}|German|DE) - 四位数字或GermanDE
  • \b - 单词边界
  • (?!.*\[[^\]\[]*]) - 在当前位置的右边,不应该有
    • .* - 除换行符以外的任何零个或多个字符尽可能多
    • \[[^\]\[]*] - [,除[] 之外的零个或多个字符,然后是]
  • .* - 该行的其余部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2021-10-30
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多