我有一个标题:
[b]Author Name - Book Title (2004) (PDF)[/b]
我想在此标题中删除(2004)和(PDF),我可以使用此正则表达式分隔作者姓名和书名:
\[b\](.+?) - (.+?)\[/b\]
但是,我不知道如何删除年份及其格式。
我真的很感激任何帮助。
答案 0 :(得分:1)
答案 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;)这样效率会更高,并且不会匹配格式错误的数据,而不会给您一些未定义的结果。在您找到要支持的无效案例时进行调整。