Html Regex删除标题中的年份和格式

时间:2017-06-09 12:02:45

标签: html regex

我有一个标题:

[b]Author Name - Book Title (2004) (PDF)[/b]

我想在此标题中删除(2004)和(PDF),我可以使用此正则表达式分隔作者姓名和书名:

\[b\](.+?) - (.+?)\[/b\]

但是,我不知道如何删除年份及其格式。

我真的很感激任何帮助。

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式/ \(.*?\)/g

这匹配在打开和关闭括号之前有空格的所有内容。

我不知道您使用哪种语言来运行正则表达式,因此在您更新标记之前,我无法将其用于编程语言。

答案 1 :(得分:1)

我不知道&#34; HTML正则表达式&#34;除了可以在HTML5 <input>标记中使用正则表达式作为验证规则。

[b]Author Name - Book Title (2004) (PDF)[/b]根本不符合HTML。

如果你确定

  • 作者不包含连字符(强烈假设)
  • 年份和格式始终如图所示

您可以按照选择作者和标题的方式过滤掉这两个字段...

您没有指定正则表达式/引擎的风格,但是使用您使用的语法,以下内容应该有效:

\[b\](.+?) - (.+?) \(\d{4}\) \(.*?\)\[/b\]

Perl RE可能看起来像

/\[b\] \s* (.+?) \s+ - \s+ (.+?) \s+ \(\d{4}\) \s+ \(.*?\) \s* \[\/b\]/x

分别以$ 1和$ 2的形式返回作者和标题。如有必要,使用括号也可以捕获2个属性。

答案 2 :(得分:0)

使用正则表达式,有助于尽可能具体:

\[b\](\w+(?: \w+)*) - (\w+(?: \w+)*) \(\d+\) \(\w+\)\[\/b\]
  • (\w+(?: \w+)*):匹配以空格分隔的单词系列(数字计为单词)
    • (?:)是非捕获组
  • \(\d+\) \(\w+\):匹配(&lt; numbers&gt;)(&lt; word&gt;)

这样效率会更高,并且不会匹配格式错误的数据,而不会给您一些未定义的结果。在您找到要支持的无效案例时进行调整。