-3

我正在尝试在 PHP 上编写正则表达式,但被下面的重复部分卡住了。是否可以使用一个正则表达式获取此信息?

与这组——Grandma (2013/Bluray)

<h1>Grandma / Nice story of grandma 2013 / Grandparents / Granma on vacation (2013/Bluray)</h1>
<h1>Grandma / Nice story of grandma 2013 / Grandparents (2013/Bluray)</h1>
<h1>Grandma / Nice story of grandma 2013 (2013/Bluray)</h1>
<h1>Grandma (2013/Bluray)</h1>

与这组——Game of death 2 (1981/HDRip)

<h1>Game of death 2 / TD 2 / Super death towers II / Towers of Death / Game of Death II / Tower of Death (1981/HDRip)</h1>
<h1>Game of death 2 / TD II / Super death towers II / Towers of Death / Game of Death II / Tower of Death (1981/HDRip)</h1>
<h1>Game of death 2 / Super death towers II / Towers of Death / Game of Death II / Tower of Death (1981/HDRip)</h1>
<h1>Game of death 2 / Towers of Death / Game of Death II / Tower of Death (1981/HDRip)</h1>
<h1>Game of death 2 / Towers of Death / Tower of Death (1981/HDRip)</h1>
<h1>Game of death 2 / Tower of Death (1981/HDRip)</h1>

我现在拥有的正则表达式是/<h1>([^\/]*)(.*)\((.*)\)<\/h1>/i. 但它不起作用<h1>Grandma (2013/Bluray)</h1>

4

1 回答 1

0

我无法访问 PHP 正则表达式引擎来尝试此操作,但以下正则表达式在 .NET 中有效

<h1>([^\/(]*)(?:.*)\((.*)\)<\/h1>

这将捕获所有样本输入所需的数据。在现场演示页面,点击右侧的“20组”,可以看到抓包的内容。

我改变了你所拥有的两件事:

  • 更改[^\/][^\/(]避免捕获括号中的内容
  • 更改(.*)(?:.*),使其成为非捕获组,因为我们不关心文本的那部分

在某些情况下,此正则表达式会捕获额外的空格,因此您应该调用trim()捕获的组以消除额外的空格。

于 2013-07-29T21:21:37.590 回答